docker集装箱内运行docker?
我正在使用Docker容器来构build我的软件并将其部署到ec2的集合中。 在部署脚本中,我构build我的软件,然后将其打包在泊坞窗图像中。 图像被推送到我的私人registry,由我的生产ec2的拉,然后运行。 所以基本上我需要在Docker容器中运行docker。
问题是我实际上无法在我的容器上启动docker。 如果我尝试
service docker start
我明白了
bash: service: command not found
如果我尝试
docker -d
我明白了
2014/10/07 15:54:35 docker daemon: 0.11.1-dev 02d20af/0.11.1; execdriver: native; graphdriver: [e2feb6f9] +job serveapi(unix:///var/run/docker.sock) [e2feb6f9] +job initserver() [e2feb6f9.initserver()] Creating server 2014/10/07 15:54:35 Listening for HTTP on unix (/var/run/docker.sock) [error] attach_loopback.go:42 There are no more loopback device available. loopback mounting failed [e2feb6f9] -job initserver() = ERR (1) 2014/10/07 15:54:35 loopback mounting failed
docker容器上不存在service命令,所以我无法启动docker。 我不知道我现在应该做什么来启动泊坞窗,所以我有点卡住在这里,任何帮助表示赞赏。
多一点的信息
主机运行fedora 20(最终会在ec2上运行amazon linux)
Docker容器运行centos 7.0
主机运行Docker版本1.2.0,生成fa7b24f / 1.2.0
容器正在运行docker-0.11.1-22.el7.centos.x86_64
如何不运行docker中的“docker”,然后在你的主机上运行docker,但是从docker容器中运行docker? 只要装上你的docker.sock和docker二进制文件:
docker run -v /var/run/docker.sock:/run/docker.sock -v $(which docker):/bin/docker [your image]
https://github.com/sameersbn/docker-gitlab使用这种方法旋转docker集装箱,看看这个图像。
你也可以看看: https : //registry.hub.docker.com/u/mattgruter/doubledocker/
更新在2016年7月
最新的方法是使用docker:dind
图像,如下所述: https docker:dind
简短的摘要:
$ docker run --privileged --name some-docker -d docker:dind
然后: $ docker run --rm --link some-docker:docker docker info
: $ docker run --rm --link some-docker:docker docker info
在几乎所有情况下,我会build议遵循@ cthulhu的答案,而不是在Docker中运行“docker”,在必须的情况下(例如,testing多个docker版本的testing套件),请使用以下命令创build其他环回设备:
#!/bin/bash for i in {0..6} do mknod -m0660 /dev/loop$ib 7 $i done
(摘自Docker Issue#7058的post)
你可以简单地使用dind
容器中运行dind
。 尝试从杰罗姆这个形象,如下所示:
docker run --privileged -t -i jpetazzo/dind
检查此页面以了解更多详情:
https://github.com/jpetazzo/dind