我正在尝试手动使用docker:19.03.5-dind图像,如“如何使用此图像”部分所示。
首先我正在运行守护进程
$ docker run --privileged -d --rm --name=docker-daemon \ --network=test docker:19.03.5-dind e1f8544d30df5bc010d67e38b38be0f47306b29ab0fdeb32861c5716582c9917
我看到它已启动并在端口 2376 上侦听
$ docker logs docker-daemon ... time="2019-11-28T11:31:40.266976728Z" level=info msg="Daemon has completed initialization" time="2019-11-28T11:31:40.550083421Z" level=info msg="API listen on [::]:2376" time="2019-11-28T11:31:40.550169911Z" level=info msg="API listen on /var/run/docker.sock"
接下来我启动 docker 客户端:
$ docker run -it --rm --name=my-docker \ --network=test --link=docker-daemon:docker docker:19.03.5
从客户端我可以 ping docker-daemon及其docker别名
# ping docker-daemon -c1 PING docker-daemon (172.20.0.2): 56 data bytes 64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.146 ms ... # ping docker -c1 PING docker (172.20.0.2): 56 data bytes 64 bytes from 172.20.0.2: seq=0 ttl=64 time=0.177 ms ...
但我仍然无法运行 docker:
# docker ps Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?
它不应该尝试连接端口 2376 吗?我在这里想念什么?
我的主机运行 Ubuntu 18.04 和 Docker 版本 18.09.7,构建 2d0083d
您需要遵循链接文档中的步骤,包括将证书目录作为卷安装在两个容器中,并在客户端容器上传递 env 变量:
第一个映像填充卷安装,第二个映像使用这些证书通过 2376 进行通信。如果没有证书,它会尝试连接到未加密的 2375 端口,该端口在 19.03 dind 映像中默认未启用。