知乎专栏 |
Portainer 是一个轻量级的 Docker 管理界面,官方提供了 Demo 演示地址
Server 服务器安装
docker volume create portainer_data docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Agent 代理安装
docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent
使用 docker-compose 安装
version: '3.9' services: portainer: image: portainer/portainer-ce container_name: prtainer restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - portainter:/data ports: - 8000:8000 - 9000:9000 portainer-agent: image: portainer/agent container_name: portainer-agent restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/volumes:/var/lib/docker/volumes ports: - 9001:9001 volumes: portainter:
第一台管理服务器,启动管理界面: [root@netkiller portainer]# docker-compose up -d portainer 第二台开发环境服务器,启动代理: [root@development portainer]# docker-compose up -d portainer-agent 第三台测试环境服务器,启动代理 [root@testing portainer]# docker-compose up -d portainer-agent
设置管理员密码,创建用户
当前界面中有三个选项,分别是 Docker(本地 Docker),Kubernetes, Agent(代理)
添加本地 Docker,通过 UNIX SOCK 链接,通常是 /var/run/docker.sock
点击 Connect 按钮就可以建立链接
添加代理 Docker,左边菜单点击 Endpoints,然后点击 Add endpoint
选择 Agent
Name 给代理起个名气,Endpoint URL 输入代理的IP地址和端口号,Group 是分组(可不选),最后点击 Add endpoint 按钮。
完成代理的添加
回到 Home
portainer 错误日志
portainer | 2021/08/04 07:24:14 http error: Unable to initiate communications with endpoint (err=agent already paired with another Portainer instance) (code=500) portainer | 2021/08/04 07:25:49 http error: Unable to initiate communications with endpoint (err=agent already paired with another Portainer instance) (code=500)
agent 日志
portainer-agent | 2021/08/04 07:25:49 http error: Invalid request signature (err=Unauthorized) (code=403) portainer-agent | 2021/08/04 07:25:49 http error: Invalid request signature (err=Unauthorized) (code=403)
问题出在,重装了 portainer 先前的 agent 已经与之前的 portainer 建立链接。
解决方法,重装 agent 记得要删除卷。
[root@testing portainer]# docker-compose stop portainer-agent Stopping portainer-agent ... done [root@testing portainer]# docker-compose rm -a portainer-agent WARNING: --all flag is obsolete. This is now the default behavior of `docker-compose rm` Going to remove portainer-agent Are you sure? [yN] y Removing portainer-agent ... done [root@testing portainer]# docker volume ls DRIVER VOLUME NAME local portainer_portainter [root@testing portainer]# docker volume rm portainer_portainter portainer_portainter [root@testing portainer]# docker-compose up -d portainer-agent Creating volume "portainer_portainter" with default driver Creating portainer-agent ... done [root@testing portainer]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------------- portainer-agent ./agent Up 0.0.0.0:9001->9001/tcp,:::9001->9001/tcp