1. 程式人生 > >非節點主機通過內網遠程管理docker swarm集群

非節點主機通過內網遠程管理docker swarm集群

生效 天使 dock blank class listen systemctl clas des

這是今天使用 docker swarm 遇到的一個問題,終於在睡覺前解決了,在這篇隨筆中記錄一下。

在 docker swarm 集群的 manager 節點上用 docker cli 命令可以正常管理集群。但是在另外一臺不是集群節點的主機上,雖然設置了DOCKER_HOST環境變量

export DOCKER_HOST="tcp://manger節點內網IP:2377"

但連接不上

# docker ps
Cannot connect to the Docker daemon at tcp://x.x.x.x:2377. Is the docker daemon running?

後來在 CoreOS 網站上找到了解決方法 - Customizing docker:

1. 創建 /etc/systemd/system/docker-tcp.socket 文件並添加下面的配置

[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=x.x.x.x:2375
BindIPv6Only=both
Service=docker.service

[Install]
WantedBy=sockets.target

註:上面的 x.x.x.x 是 manager 節點的內網 IP 地址

2. 重啟相關服務使設置生效

systemctl enable docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker

3. 設置 DOCKER_HOST 環境變量

export DOCKER_HOST="tcp://manger節點內網IP:2375"

或者直接

docker -H tcp://manger節點內網IP:2375 ps

就可以連接並正常遠程管理 docker swarm 集群了。

非節點主機通過內網遠程管理docker swarm集群