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