Docker 客户端连接远程 Docker Daemon


环境准备

  • Ubuntu 18.04 运行着 Docker Daemon 19.03.6
  • MacOS 系统运行着 Docker Client 20.10.2 版本

设置 Ubuntu 中的 Docker Daemon

注: 这一小节的命令都在 Ubuntu 中执行

  • 配置 Docker Daemon
# 创建 docker service 的配置文件目录
sudo mkdir -p /etc/systemd/system/docker.service.d
# 修改 docker service 的启动命令,令其监听本地套接字文件和 2375 端口
sudo cat > /etc/systemd/system/docker.service.d/options.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
EOF
  • TODO: 配置防火墙 (由于我的 Ubuntu 是台虚拟机,我直接将防火墙关闭了)

  • 重启 docker service,令配置生效

sudo systemctl daemon-reload # 重新载入 systemd 关于 docker service 的配置
sudo systemctl restart docker.service # 重启 docker service
  • 执行 docker version -f '{{.Server.APIVersion}}',查看 Docker API 版本,我的版本是 1.40

客户端测试连接

注: 这一小节的命令都在 MacOS 中执行

  • 执行 curl 192.168.56.23:2375/v1.40/images/json,会列出所有已经下载的镜像,若返回值正确,表示 Docker Daemon 已经配置好了
  • 使用 docker client 连接 Ubuntu 中的 Docker Daemon
ø> DOCKER_HOST=tcp://192.168.56.23:2375 docker images                                                                                                                                                                                                                                                     11:55:17 (05-22)
REPOSITORY                        TAG       IMAGE ID       CREATED         SIZE
ubuntu                            20.04     8e428cff54c8   8 weeks ago     72.9MB
ubuntu                            latest    8e428cff54c8   8 weeks ago     72.9MB
elasticsearch                     7.5.1     2bd69c322e98   17 months ago   779MB
docker.elastic.co/kibana/kibana   7.1.0     714b175e84e8   2 years ago     745MB

最后,我在 zshrc 中添加了一条 alias:

(( $+commands[docker] )) && alias docker="DOCKER_HOST=tcp://192.168.56.23:2375 docker"

这样在 MacOS 中执行 docker 命令访问的就是 Ubuntu 虚拟机中的 Docker Daemon 了。

2021年05月22日 / 11:41