【解決】Got permission denied while trying to connect to the Docker daemon socket at......dial unix /var/run/docker.sock: permission denied


 

 

>>> 問題:搭建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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM