Docker為C/S架構,服務端為docker daemon,客戶端為docker.service. 默認不會監聽任何端口,只能在本地使用docker客戶端或者使用Docker API進行操作。要支持遠程客戶端訪問需要做如下設置(不安全,因為開了監聽端口,任何人都可以遠程連接到docker daemon服務器進行操作):
docker.service 中 dockerd 的 -H 參數不能與 daemon.json 中的 hosts 鍵值對沖突。(其他參數同理)
/etc/docker/daemon.json會被docker.service的配置文件覆蓋,直接添加daemon.json不起作用;
方法1、
vim /lib/systemd/system/docker.service
將管理地址寫入 /etc/profile :
echo 'export DOCKER_HOST=tcp://0.0.0.0:2375' >> /etc/profile
source /etc/profile
然后重啟:
systemctl daemon-reload && systemctl restart docker
方法2、
systemctl edit docker.service 寫入以下幾行內容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
保存、退出;
重啟: systemctl daemon-reload && systemctl restart docker
方法3、
新建 /etc/systemd/system/docker.service.d/docker.conf 文件,寫入以下幾行內容:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
在 /etc/docker/daemon.json 中寫入以下內容:
{
"hosts":[
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
]
}
然后重啟: systemctl daemon-reload && systemctl restart docker
在另外一台docker服務器上遠程連接測試:
docker -H tcp://192.168.3.201:2375 ps #192.168.3.201:是開啟允許遠程連接的那一台服務器,2375:端口 ps:docker命令