原理
docker
在被安装时默认会在/var/lib/docker.sock
创建unix domain socket
。docker daemon
会通过它来监听Docker Engine API 请求。而docker
命令本质上是在/bin/docker
里包装了这些请求交互的细节(猜想,有研究过的朋友可以分享一下🤝)。所以我们只需要将这两个文件挂载到容器中即可。
如果只挂载/var/lib/docker.sock
,我们查看容器列表(docker ps
)就需要这样操作:
curl -s --unix-socket /var/run/docker.sock http://dummy/containers/json
总的来说:
/var/lib/docker.sock
保证能跟docker daemon
通信/bin/docker
隐藏通信细节
具体操作
docker run -d --name <yourContainerName>