如何修复错误“无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程。docker 守护进程是否正在运行”

时间:2021-01-07 11:14:48

标签: docker dockerfile dind

我正在尝试在另一个 docker 容器内启动一个 docker 容器,但出现此错误:

<块引用>

无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程。 docker 守护进程是否正在运行

当我尝试使用 docker build -t dind .

构建图像时出现此错误

这是我的 Dockerfile 的样子:

FROM docker:18.09.0-dind

RUN docker network create gitlab-runner-net

RUN docker run -d \
  --name gitlab-dind \
  --privileged \
  --restart always \
  --network gitlab-runner-net \
  -v /var/lib/docker \
  docker:17.06.0-ce-dind \
  --storage-driver=overlay2

RUN mkdir -p /srv/gitlab-runner  
RUN touch /srv/gitlab-runner/config.toml

谁能告诉我为什么会出现这个错误以及如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我不知道这是否会帮助你,但你可以使用泊坞窗,撰写代替:

的为例搬运工-compose.yml

version: '3.5'
 
services:
  docker:
    image: docker:18.09.0-dind
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock 
      - /var/lib/docker
    entrypoint: /bin/sh
    command: -c "docker network create gitlab-runner-net; 
      docker run -d   --name gitlab-dind   --privileged   
        --restart always   --network gitlab-runner-net   
        -v /var/lib/docker   docker:17.06.0-ce-dind"

然后docker-compose up -d

Starting dk_docker_1 ... done
Attaching to dk_docker_1
docker_1  | 66fdfc18e290814cff7b1d8cb75acf575e22cc5b4d3478e0274b82043f0d493c
docker_1  | e3a2deb36d8a8b71aef86b2a73455a2a1cd5fa99c4e961a125421ca7aefd2e14
dk_docker_1 exited with code 0

然后,主机上:

docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS      NAMES
e3a2deb36d8a   docker:17.06.0-ce-dind   "dockerd-entrypoint.…"   45 seconds ago   Up 44 seconds   2375/tcp   gitlab-dind

内部搬运工然后运行搬运工:

docker exec -it 05e7f866382b docker run -d alpine sleep 300
Unable to find image 'alpine:latest' locally
latest: Pulling from library/alpine
801bfaa63ef2: Pull complete 
Digest: sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f23436
Status: Downloaded newer image for alpine:latest
06a481b6692d6e4ef19ca4bd95ddc403c08a828817dc66092343ddd3e0690f27

docker exec -it 05e7f866382b docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
06a481b6692d        alpine              "sleep 300"         12 seconds ago      Up 12 seconds                           peaceful_snyder

这只是一个例子,你将不得不正确设置网络,卷等等...

答案 1 :(得分:0)

我遇到了这个问题,但是在 datagrip 中使用 docker 但最终发现问题出在许可上,如果您从 sudo 开始,问题将得到解决,或者如果您只想使用 docker 我建议您查看此 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04 并且有一个丑陋的解决方法,那就是使用此命令授予 docker.sock 权限 sudo chmod 777 /var/bin/docker.sock 希望对你有帮助