>>> 问题:搭建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