>>> 問題:搭建Portainer時,選擇本地連接報錯?
>>>分析: 根據報錯信息可知是權限問題。
可能原因一:使用了非root用戶啟用或連接docker
>>> Docker進程使用Unix Socket而不是TCP端口,而默認情況下,Unix socket屬於root用戶,因此需要root權限才能訪問。
sudo groupadd docker #添加docker用戶組
sudo gpasswd -a $XXX docker #檢測當前用戶是否已經在docker用戶組中,其中XXX為用戶名。
sudo gpasswd -a $USER docker #將當前用戶添加至docker用戶組
newgrp docker #更新docker用戶組
可能原因二:啟動命令未掛載docker.sock文件
>>> 單機模式頁面有提示需要掛載本地 /var/run/docker.sock
與容器內/var/run/docker.sock
連接,因此,在啟動時必須指定該掛載文件。
它是Docker守護進程(Docker daemon)默認監聽的Unix域套接字(Unix domain socket),容器中的進程可以通過它與Docker守護進程進行通信。
docker run -d -p 9000:9000 --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ --name prtainer-test portainer/portainer
# 用宿主機9000端口關聯容器9000端口,並給容器起名為portainer-test。
# 執行完該命令之后,使用該機器IP:PORT即可訪問Portainer。
可能原因三:Docker版本過低
>>> 分別查看docker運行狀態、版本、信息,發現運行狀態均正常,但是版本卻是1.13.1。
這是一個很老很老的版本,雖然搭建運行docker命令均無問題,但是與很多鏡像存在兼容問題。
一般都是因為你使用默認安裝(yum install docker),如果你細心點執行命令 yum list docker 你會發現只有一個1.13.1的包,這是因為你的系統版本不夠高,隨之的yum庫軟件版本也都比較低,需要進行一些設置再進行安裝。
詳情參考 ——> 獲取Centos的Docker CE 或 獲取Ubuntu的Docker CE
1. 查看docker版本
2. 查看docker信息
3. 查看docker狀態
>>>其他:Docker swarm集群模式,選擇Remote模式連接報錯?
get http://xx.xx.xx.xx:2377/_ping: dial tcp xx.xx.xx.xx::2377: connect : no route to hsot
可能原因一:
1、監聽端口不匹配
2、對方的域名確實不通
3、本機自己開了防火牆
4、未開放docker.sock
5、使用域名,但是本機的etc/hosts 里面沒有配置本機的機器名和ip
4、最好的解決辦法就是直接使用swarm命令創建portainer/portainer容器時加上-H unix:///var/run/docker.sock
docker service create \
--name Portainer-swarm \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock
