文章出處
文章列表
這是今天使用 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
PartOf=docker.service [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
或者
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 集群了。
注:一定要添加 PartOf=docker.service ,不然服務器重啟后,docker-tcp.socket 不會自動啟動。
文章列表
全站熱搜