CI和Docker-in-a-Docker
我正在尝试将docker集成到我的CI平台中。 在使用Docker-in-a-docker
解决scheme正确工作之后,我遇到了一位Docker
维护人员的博客文章,他在那里说,我没有为我的CI使用Docker-in-a-docker
解决scheme,而是应该将/var/run/docker.sock
挂载到我的CI容器。
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
简单地说,当你启动你的CI容器(Jenkins或者其他)时,不要用Docker-in-Docker一起黑客攻击,
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
所以我试了一下 我运行了以下命令:
docker run -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock jenkins
使用jenkins作为我的CI容器。
当运行上述命令时,jenkins启动正常,我可以跳到容器中看到docker.sock
文件位于/var/run/
path中。
但是,当我运行命令: docker
,机器返回以下消息:
bash: docker: command not found
有没有人知道我错过了什么,以便按照作者的指示做这项工作?
我在新的CentOS 7盒子上使用了Docker v. 1.11.1
。
提前致谢
现在想出来了。 只要将docker
守护进程+依赖项添加到容器,上面的命令就可以工作。 就我而言,我最终编写了一个简单的Dockerfile
,其中也包含了这一行:
RUN curl -sSL https://get.docker.com/ | sh
这在容器上安装了Docker,当我从容器中运行Docker docker images
,我可以看到来自主机的所有镜像。 我现在可以使用容器内的所有docker
命令。