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

标签 jenkins docker

我有一个运行 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/

相关文章:

python - docker python flask 得到 "Do you want to continue"然后 "executor failed"

docker - 在 dockerfile 中正确设置 Perl 环境

mongodb - 如何更改官方mongo docker进行身份验证和数据分离?

Jenkins 主从交互

jenkins - 什么是publishHtml reportFiles 参数语法

c# - 在构建解决方案而非项目时,C# 7 中的值元组因 MSBuild.exe 而失败

当从 linux 样式路径转换时,Docker 安装的卷将 ;C 添加到 Windows 路径的末尾

python - 执行程序的任何潜在修复都无法运行 [/bin/sh -c apk add --no-cache python g++ make] : exit code: 1 error?

svn - Jenkins List Subversion 标签 - 插件不显示所有标签

git - 使用 Gradle Release Plugin 的 SSH Git 访问