配置 Docker 守护进程的远程访问
默认情况下,Docker 守护进程侦听 Unix 套接字上的连接以接受来自本地客户端的请求。通过将 Docker 配置为侦听 IP 地址和端口以及 Unix 套接字,可以允许 Docker 接受来自远程主机的请求。有关此配置选项的更多详细信息,请参阅 dockerd CLI 参考。
警告
在配置 Docker 接受来自远程主机的连接之前,了解向网络开放 Docker 的安全影响至关重要。如果不采取措施保护连接,远程非 root 用户就有可能获得主机上的 root 访问权限。有关如何使用 TLS 证书来保护此连接的更多信息,请查看 保护 Docker 守护程序套接字。
您可以将 Docker 配置为接受远程连接。docker.service
对于使用 systemd 的 Linux 发行版,可以使用 systemd 单元文件来完成此操作。或者daemon.json
,如果您的发行版不使用 systemd,您也可以使用该文件。
系统对比
daemon.json
将 Docker 配置为同时使用 systemd 单元文件和该文件来侦听连接会
daemon.json
导致冲突,导致 Docker 无法启动。
使用 systemd 单元文件配置远程访问
使用该命令在文本编辑器中
sudo systemctl edit docker.service
打开覆盖文件。docker.service
添加或修改以下行,替换您自己的值。
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
保存文件。
重新加载
systemctl
配置。$ sudo systemctl daemon-reload
重新启动 Docker。
$ sudo systemctl restart docker.service
验证更改是否已完成。
$ sudo netstat -lntp | grep dockerd tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
使用 daemon.json 配置远程访问
设置
hosts
要/etc/docker/daemon.json
连接到 Unix 套接字的数组和 IP 地址,如下所示:{ "hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"] }
重新启动 Docker。
验证更改是否已完成。
$ sudo netstat -lntp | grep dockerd tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd