Docker配置远程访问
Docker配置远程访问
暴力修改
这种就很简单暴力,直接修改/lib/systemd/system/docker.service
文件,注释掉默认的 ExecStart 并添加新的 ExecStart 配置:
# ExecStart=/usr/bin/dockerd -H fd:// |
然后重启 docker.service:
$ sudo systemctl daemon-reload |
这样 docker 就开始监听 tcp 端口 2375 了
systemctl修改
是使用 systemctl edit docker
来调用文本编辑器修改指定的单元或单元实例,ubuntu 默认调用的是 nano 编辑器,不是很好用,如果不熟悉 nano 编辑器的操作可以使用 vim 编辑器。
主要也就是新建或修改 /etc/systemd/system/docker.service.d/override.conf
,其内容如下:
##Add this to the file for the docker daemon to use different ExecStart parameters (more things can be added here) |
解释一下:
默认情况下使用 systemd 时,docker.service 的设置为:
ExecStart=/usr/bin/dockerd -H fd://
,这将覆盖写到 daemon.json 中的任何 hosts 。通过在 override.conf 文件中将 ExecStart 仅仅定义为:ExecStart=/usr/bin/dockerd
,这将会使用在 daemon.json 中设置的 hosts 。这个文件中的第一行ExecStart=
必须要有,因为它将用于清除默认的 ExecStart 参数。如果是修改 docker.service 的文件而不是创建 override.conf,那么下次 systemd 重启时,docker.service 文件也会被重新创建。
然后在 /etc/docker/daemon.json
(没有就新建一个,下文统一简称 daemon.json)中写入以下内容
{ |
该文件必须符合 json 规范写法,否则 Docker 将不能启动
重新加载 daemon 并重启 docker 服务:
$ sudo systemctl daemon-reload |
检查端口监听:
$ sudo netstat -ntlp |grep dockerd |
在远程主机上面通过 tcp socket 来访问本机的 Docker Daemon 服务:
$ docker -H 192.168.205.10:2375 images |
其中 192.168.1.130 是开放了远程访问的主机的 IP。