在docker容器内运行docker?

Col*_*phy 27 centos fedora docker

我正在使用一个docker容器来构建和部署我的软件到ec2的集合.在部署脚本中,我构建了我的软件,然后将其打包到docker镜像中.图像被推送到我的私人注册表,由我的生产ec2's拉,然后运行.所以基本上我需要在docker容器中运行docker.

问题是我实际上无法在我的容器上启动docker.如果我试试

service docker start
Run Code Online (Sandbox Code Playgroud)

我明白了

bash: service: command not found
Run Code Online (Sandbox Code Playgroud)

如果我试试

docker -d
Run Code Online (Sandbox Code Playgroud)

我明白了

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
Run Code Online (Sandbox Code Playgroud)

docker容器上不存在service命令,因此我无法启动docker.我不知道我现在应该做什么来启动码头工具所以我有点卡在这里,任何帮助都表示赞赏.

更多信息

主机正在运行fedora 20(最终将在ec2上运行amazon linux)

Docker容器正在运行centos 7.0

主机运行Docker 1.2.0版,构建fa7b24f/1.2.0

Container正在运行docker-0.11.1-22.el7.centos.x86_64

cth*_*lhu 42

如何不在你的主机上运行'docker in 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:dindimage,如下所述:https: //hub.docker.com/_/docker/

简短的摘要:

$ docker run --privileged --name some-docker -d docker:dind

然后: $ docker run --rm --link some-docker:docker docker info