【发布时间】:2020-08-01 21:23:08
【问题描述】:
我已阅读 Can anyone explain docker.sock 以了解 /var/run/docker.sock 的作用,但它在 GitLab CI 的 Use Docker socket binding 中的使用让我感到困惑。
这是他们的gitlab-runner注册示例命令:
sudo gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token REGISTRATION_TOKEN \
--executor docker \
--description "My Docker Runner" \
--docker-image "docker:19.03.12" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
我看到生成的容器可以从两个地方获得docker。
- unix 套接字
/var/run/docker.sock。 - 基础镜像
docker:19.03.12中包含的docker二进制文件。
这不是PATH 冲突吗?我认为应该是其中之一,我可以从主机的 unix 套接字或基本映像中获得使用 docker 的能力。
我认为--docker-image 应该改为ubuntu:latest 或类似docker 不附带的内容,因为PATH 的docker 已经来自主机套接字。或者,将移除 docker 套接字安装。
关于docker 的双重包含,这里实际发生了什么?
【问题讨论】:
-
也许这会有所帮助:jpetazzo.github.io/2015/09/03/…
-
@DucNguyen Yup 帮助我了解了
/var/run/docker.sock,但gitlab-runner正在将 docker 套接字安装在 docker 映像中的 docker 顶部,而不是像您的链接中描述的那样作为替代方案。这就是问题所在。
标签: docker gitlab-ci gitlab-ci-runner unix-socket docker-in-docker