docker容器内的docker
我想在运行的docker容器中安装docker。
docker run -it centos:centos7
我的基本容器使用centos,我可以使用docker exec
login到运行容器。 但是当我尝试使用yum install -y docker
它会安装。
但不知何故,我不能用docker -d &
来启动docker服务,它给我错误:
INFO[0000] Option DefaultNetwork: bridge WARN[0000] Running modprobe bridge nf_nat br_netfilter failed with message: , error: exit status 1 FATA[0000] Error starting daemon: Error initializing network controller: Error initializing bridge driver: Setup IP forwarding failed: open /proc/sys/net/ipv4/ip_forward: read-only file system
有没有一种方法,我可以在docker容器内安装docker或build立图像已经有运行docker? 我已经看过这些例子,但是没有一个适合我。
uname -r
在主机上的输出:
[fedora@ ~]$ uname -r 4.2.6-200.fc22.x86_64
任何帮助,将不胜感激。
提前致谢
更新
感谢https://stackoverflow.com/a/38016704/372019我想显示另一种方法。
而不是挂载主机的docker
二进制文件,您应该复制或安装docker
二进制文件的特定版本的容器。 由于您只是在客户端模式下使用它,因此不需要将其作为系统服务安装。 您仍然需要将Docker套接字安装到容器中,以便您可以轻松地与主机的Docker引擎进行通信。
假设你有一个工作的Docker二进制文件(例如正式的docker镜像 )的基本镜像,现在这个例子看起来像这样:
docker run\ -v /var/run/docker.sock:/var/run/docker.sock\ docker:1.12 docker info
没有真正回答你的问题,我build议你阅读在你的CI或testing环境中使用Docker-in-Docker? 仔细想想 。
它解释了为什么运行中的docker-in-docker应该replace为Docker容器作为“outer”或“base”容器的同级运行的设置。 本文还链接到原始的https://github.com/jpetazzo/dind项目,您可以在这里find如何在Docker中运行Docker的工作示例 – 以防您仍然需要docker in docker。
如何启用容器来访问主机的Docker守护进程,如下所示:
docker run\ -v /var/run/docker.sock:/var/run/docker.sock\ -v /usr/bin/docker:/usr/bin/docker\ busybox:latest /usr/bin/docker info
如果你在Mac上使用Docker工具箱。
下面的命令是行不通的
docker run\ -v /var/run/docker.sock:/var/run/docker.sock\ -v /usr/bin/docker:/usr/bin/docker\ busybox:latest /usr/bin/docker info
因为/var/run/docker.sock
不会在你的OSX文件系统上
Docker守护进程在boot2docker
虚拟机内部运行 – 这就是unix套接字所在的位置。
所以你必须从boot2docker
VM运行容器
$ docker-machine ssh default $ docker run\ -v /var/run/docker.sock:/var/run/docker.sock\ -v $(which docker):/usr/bin/docker\ busybox:latest /usr/bin/docker info $ exit
这看起来像Docker-in-Docker,感觉像Docker-in-Docker,但不是Docker-in-Docker,当这个容器创build更多容器时,这些容器将在顶层Docker中创build。
你需要--privileged
参数。
默认情况下,Docker容器是“非特权”,不能在Docker容器中运行Docker守护进程。
资源
使用命令docker run --privileged -it centos:centos7 bash
运行你的基础镜像。 然后,您可以在该容器内安装并运行另一个Docker容器。