gpt4 book ai didi

docker - 在 Docker 场景中在 Docker 中挂载 `/var/run/docker.sock` 的结果是什么?

转载 作者:行者123 更新时间:2023-12-02 17:59:59 25 4
gpt4 key购买 nike

我已阅读 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基础镜像中包含的二进制文件docker:19.03.12 .

  • 这不是一个 PATH冲突?我认为应该是其中一个,我获得了使用 docker的能力来自主机的 unix 套接字或基本镜像。
    我认为 --docker-image应该改为 ubuntu:latestdocker 中没有的类似内容, 因为 PATHdocker已经来自主机套接字。或者,将移除 docker socket 安装。
    关于 docker 的双重包含,这里实际发生了什么?

    最佳答案

    Unix 套接字文件 /var/run/docker.sock通常由 Docker 守护进程创建。如果您将其他东西作为主容器进程运行,则不会创建套接字。你可以通过运行一个带有非 Docker 主进程的容器来直接查看,如 /bin/ls :

    docker run --rm docker:19.03.12 ls -l /var/run
    docker run --rm docker:19.03.12 ls -l /run
    /usr/bin/docker如果要使用二进制文件,则容器文件系统中必须存在二进制文件。容器永远不能调用主机上的二进制文件,套接字 API 也不会生成二进制文件。 (一些非常早期的“使用主机的 Docker 套接字”帖子提倡将二进制文件绑定(bind)挂载到容器中,但这会导致库依赖问题,并使图像无法自包含。)
    因此,如果您真正需要的只是一个 Docker 容器,带有 docker二进制,可以调用主机的 Docker 套接字,你需要一个像 docker 这样的图像其中图像有 /usr/bin/docker ,另外你需要绑定(bind)挂载主机的 /var/run/docker.sock进入容器。
    docker run \
    --rm \
    -v /var/run/docker.sock:/var/run/docker.sock \
    docker:19.03.12 \
    docker ps

    您链接到的 GitLab 设置似乎相当做作。使用 docker运行作业的图像意味着几乎唯一可以运行的构建步骤是 docker命令。在技​​术层面上,您无法启动 docker没有 docker 的容器二进制文件并访问正在运行的 Docker 守护程序;该页面顶部描述的 shell-executor 方法似乎更简单,并且没有任何缺点。
    您还可能会发现拥有构建时依赖项(编译器、头文件、静态检查工具等)的 Docker 镜像很方便。这将允许您更新这些依赖项,而无需对整个构建集群进行更新。如果您的构建脚本本身需要调用 docker那么你的构建工具镜像需要安装 Docker,只需使用普通的 RUN apt-get install命令。您需要以相同的方式将主机的 Docker 套接字推送到容器中,因此您不需要启动单独的 Docker 守护进程。

    关于docker - 在 Docker 场景中在 Docker 中挂载 `/var/run/docker.sock` 的结果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63201603/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com