文章出處

這是今天使用 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 不會自動啟動。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()