我使用docker容器来构建我的软件并将其部署到EC2的集合中。在部署脚本中,我构建我的软件,然后将其打包到docker映像中。镜像被推送到我的私有注册表,由我的生产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容器上不存在,因此我无法启动docker。我不确定我现在应该做什么来启动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
发布于 2014-10-10 03:47:08
不运行'docker on 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使用这种方法来旋转码头容器,看看这张图。
您还可以查看:https://registry.hub.docker.com/u/mattgruter/doubledocker/
2016年7月的更新
最新的方法是使用docker:dind图像,如下所述:https://hub.docker.com/_/docker/
简短摘要:
$ docker run --privileged --name some-docker -d docker:dind
然后:$ docker run --rm --link some-docker:docker docker info
发布于 2015-05-19 21:43:44
虽然在几乎所有的情况下,我都会建议遵循@cthulhu的答案,而不是运行"docker in docker",但在必须运行的情况下(例如,针对多个docker版本进行测试的测试套件),可以使用以下方法来创建额外的环回设备:
#!/bin/bash
for i in {0..6}
do
mknod -m0660 /dev/loop$i b 7 $i
done(取自Docker Issue #7058的线程)
发布于 2015-07-10 08:17:05
您可以简单地使用dind在docker容器中运行docker。尝试来自Jerome的此图像,如下所示:
docker run --privileged -t -i jpetazzo/dind
有关更多详细信息,请查看此页面:
https://stackoverflow.com/questions/26239116
复制相似问题