非節點主機通過內網遠程管理docker swarm集群
阿新 • • 發佈:2017-07-22
生效 天使 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集群