gpt4 book ai didi

jenkins - 在 jenkins docker 容器内执行 docker host 命令

转载 作者:行者123 更新时间:2023-12-04 21:37:59 24 4
gpt4 key购买 nike

我有一个运行 jenkins 的 docker 容器。我想在这个容器内启动另一个容器,所以在这个容器外。

我尝试使用以下命令启动我的 jenkins Controller :

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(which docker):/bin/docker

(如此处所写: https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/)

但是当我在我的容器内尝试运行 Docker 命令时,我收到了典型的消息
 FATA[0000] Get http://%2Fvar%2Frun%2Fdocker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: 
connect: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

并且无法在此容器内运行 docker 命令。

我试过有和没有--privileged=true,它仍然不起作用。

如果您有任何想法!

最佳答案

与此问题相关的帖子是 this one .

但是,就此说几句(因为我遇到了同样的问题)。您需要做两件事: (1) mount docker.sock和 (2) 有 docker服务运行。

关于(1):正如@yclian 提到的,你必须把 jenkins用户进入docker团体。

我关注了 Adrian Mouat's instruction .他建议使用 sudo docker run .. 在构建步骤中执行 docker 命令。 . sudo在我的场景中很好,但总的来说,它可能是一个安全问题,因为 Jenkins 用户可以获得对主机的 root 访问权限,并且可以创建在主机上挂载任意目录的容器。

关于 (2) 和 -v $(which docker):/bin/docker在你的命令中。我在 MacOS 上。 which docker给我 /usr/local/bin/docker/这是正确的,但仍然是 docker在容器内不可用。我启动了 jenkins 容器

docker run -p 8080:8080 -p 50000:50000 -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /Users/matthaeus/.jenkins_home:/var/jenkins_home -t -i jenkins

如果您不想这样做,您必须安装 docker engine在容器内部,通过手动连接到它( docker exec -t -i container-id /bin/bashapt-get install docker-engine )或在 Dockerfile 中指定它.

如果您已经完成了这两个构建步骤,则可能包含这样的命令 sudo docker build -t my-image .该图像也将在主机上可用。

关于jenkins - 在 jenkins docker 容器内执行 docker host 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397362/

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