在docker内部创建和启动新的docker

架构师开始给我分配这样一个任务的时候我还以为是嵌套在docker里面创建docker,其实不然,毕竟最后形成的架构,是要创建和启动的docker在一个层级被管理。
这里写图片描述
这里我们可以看到docker启动之后,会有一个dockerd的守护进程,一个containerd管理进程。注意dockerd进程绑定监听在了/var/run/docker.sock文件上,很明显,docker之间通讯使用的unix_local套接字。这里可以把dockerd看做是服务端,客户端可以是两种:
1.我们的docker命令工具,命令交互
2.docker remote api,https的协议交互
这两种客户端连接的目标其实就是/var/run/docker.sock,好的,思路解决就在这里。
第一步,我们创建docker的时候只需要-v /var/run/docker.sock:/var/run/docker.sock。我试过,如果直接挂载整个目录/var/run,那么创建的docker是起不来的,还有创建的docker --net没有限制,不管是host还是bridge都可以。
第二步,映射了docker.sock到docker后,在这个docker里面想要创建和启动新的docker,必须要有客户端来给宿主主机的dockerd服务端发送请求,这个时候我们只需要拷贝docker命令工具到docker里就可以了。
总结,其实就是之前docker命令工具客户端在宿主主机,dockerd服务端守护进程也在宿主主机。后来,我们知道它们是通过/var/run/docker.sock通信的,那么我们就给宿主主机和docker映射这个文件,保证它们的通信。然后把docker命令工具客户端给docker,那么就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值