docker安装portainer
1、拉取镜像
docker pull portainer/portainer-ce:latest
2、执行
docker run -d --restart=always --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer/data:/data -v /data/portainer/public:/public portainer/portainer-ce:latest
这里命令需要删除 -v /data/portainer/public:/public
docker run -d \ # 以后台方式运行一个 Docker 容器
--name portainer \ # 将容器命名为portainer
-p 9000:9000 \ # 将主机的9000端口(左)映射到容器的9000端口(右)
--restart=always \ # 自动重启容器,包括Docker启动以及运行失败时
-v /var/run/docker.sock:/var/run/docker.sock \ # 将主机上的/var/run/docker.sock文件挂载到容器的/var/run/docker.sock文件。这样可以使得容器能够与主机上的Docker守护进程进行通信
-v /data/portainer/data:/data \ # 将名为/data/portainer/data的卷挂载到容器的/data目录。这样可以在容器内部持久化保存Portainer的数据
--privileged=true \ # 将容器设置为具有特权访问(portainer用不到)
portainer/portainer-ce:latest # 指定要运行的Docker镜像为portainer/portainer-ce,并使用最新的版本
问题一:
Error response from daemon: driver failed programming external connectivity on endpoint portainer
原因:在我们启动了Docker后,我们再对防火墙firewalld进行操作,就会发生上述报错,
详细原因:docker服务启动时定义的自定义链DOCKER,当 centos7 firewall 被清掉时,
firewall的底层是使用iptables进行数据过滤,建立在iptables之上,这可能会与 Docker 产生冲突。
当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。
当你使用的是 Systemd 的时候, firewalld 会在 Docker 之前启动,但是如果你在 Docker 启动之后操作 firewalld ,你就需要重启 Docker 进程了。
解决办法:输入指令 如下指令,重启docker服务及可重新生成自定义链DOCKER
systemctl restart docker
问题二:
所有访问成功后,页面是空白
删除容器,启动命令改为
docker run -d --restart=always --network portainer_network --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /data/portainer/data:/data portainer/portainer:latest
将挂载public目录的命令删除即可
附录 portainer图形化界面基本操作
传送门