Portainer
简介
Portainer 是一个轻量级的容器管理平台,主要用于简化 Docker 环境的部署和管理。用户可以通过图形界面直观地管理容器、镜像、卷和网络等 Docker 资源,支持 Docker 引擎和 Swarm 模式。Portainer 的主要作用包括容器管理、镜像管理、团队与权限管理,以及提供 API 接口实现自动化部署和监控,使 Docker 资源管理更加高效和便捷。
Portainer 主要功能:
优势
- 提供状态显示面板:显示主机或者 swarm 集群上有多少镜像,容器、网络、数据卷等;
- 应用模板快速部署:可以使用预存的模板或者自己定制的模板快速部署;
- 镜像网络数据卷管理:通过页面进行管理和操作,例如构建镜像,增删数据卷等;
- 事件日志显示:对任何操作有记录,并且有页面可以显示审计日志;
- 容器控制台操作:查看容器,启停容器,查看容器占用的性能(内存,cpu 等)
- Swarm 集群管理:可以管理 swarm 集群,是最大的优点;
- 登录用户管理:有完备的用户系统,权限控制(高级功能需付费);
不足
- Portainer 没有自带的高可用,但是可以利用 nfs 等方式作高可用(其实这种管理平台也不是必定需要高可用)
- Portainer 没有中文页面,官方没有提供中文翻译,网上大神自己翻译的中文汉化包但是只能支持特定版本
安装准备
官网:Kubernetes and Docker Container Management Software (portainer.io)
选择安装社区版
进入后界面左侧菜单栏选择独立版
设置卷
docker volume create portainer_data
搜索 portainer 镜像
docker search portainer
拉取 portainer 镜像
docker pull portainer/portainer-ce
启动 portainer 容器
# 启动镜像
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
mkdir -p /mydata/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 /mydata/portainer_data:/data portainer/portainer-ce
部署命令说明
- docker run: 创建一个容器
- -d:后台运行容器,并返回容器 ID;
- -p 9000:9000:指定端口映射,格式为:主机(宿主)端口:容器端口
- -v /var/run/docker.sock:/var/run/docker.sock: 绑定一个文件或目录到容器,格式为:主机(宿主)文件:容器文件
- -v portainer_data:/data:数据持久化
部署过程
docker volume create portainer_data
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
Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
b890dbc4eb27: Pull complete
81378af8dad0: Pull complete
Digest: sha256:21713e42233ee953b4cd4e6e8b1e4b6c43ebe2ca1c2dc762824a1866fdb91d3e
Status: Downloaded newer image for portainer/portainer-ce:latest
d0e69ccfc4896eba8fa8367b091eaa9f7caf77958444c4d04994ad235991c13b
查看日志
docker logs -f portainer
Docker Compose 部署方式
#用于部署运行所依赖的服务
version: '3.9'
services:
# 基础环境组件
# 1.Portainer
portainer:
image: portainer/portainer-ce
container_name: portainer
command: -H unix:///var/run/docker.sock
restart: always
deploy:
resources:
limits:
cpus: '0.50'
memory: 800M
reservations:
cpus: '0.1'
memory: 256M
ports:
- "9999:9000"
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock #数据文件挂载
- portainer_data:/data portainer/portainer-ce #配置文件挂载
- /etc/localtime:/etc/localtime:ro
- /etc/timezone/timezone:/etc/timezone:ro
# 存储卷
volumes:
portainer_data:
启动完成后,访问 \http://ip:9000
注:如果你是云服务器,确保宿主机的防火墙或云服务提供商的安全组设置允许从客户端 IP 地址访问宿主机的 9000 端口
首次登录,需要创建管理员 admin 的密码admin,设置后登录
添加 Local Docker 主机
默认选择 Docker 选择的是本地 Docker 主机
进入主页后,选择 Endpoints-- Add endpoint-- Docker
Portainer 连接其他 docker 的宿主机也比较简单,不过需要配置下 docker,将 docker 的 tcp 连接方式打开。命令如下
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current \
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
systemctl daemon-reload
systemctl restart docker
这样即可连接到指定的 docker,下面有个 TLS 的开关,如果有强烈的安全意识可以开启这个,不过 docker 的 TLS 的打开相对复杂
主界面功能介绍
显示当前主机硬件资源和容器运行情况,当前 多少个堆栈数(Stacks),运行了 多少个容器(Containers)多少个存活 0 个停止、总共有 多少个镜像(Images) 、多少 个挂载卷和多少个网络设置。
右侧菜单分别为:
- App Templates:App 的模板,内置 40 多个常用的服务模板,可以去更新这些,也可以删除。点击新建可以创建适合自己环境的模板,方便快速部署自己的服务。
- Stacks:这里是制作自己的 docker compose 里的文件,可以创建自己的 docker compose 快速部署
- Containers:管理的主机或者及集群的所有容器,点击需要管理的容器可以查看容器详细信息。进入详情也厚有对应的运维操作:Logs(查看日志),inspect(相当于 docker inspect,查看容器详细信息),Stats(查看容器占据的性能信息,包括占用的内存 CPU 等信息),Console(进入 docker 容器,相当于 exec),Attach(docker attach,不建议使用,也不好用)
- Images:镜像操作,可以通过页面进行 pull 操作,可以查看机器上的所有镜像的详细信息,可进行大部分镜像操作(删除,build,import 导入)
- Network:展现的是机器或者集群上 network 信息,在多机器 docker 维护中,经常需要创建维护 docker network。
- Volume:Volume 就是机器上的数据卷信息,提供创建删除查看的操作。
- Events:事件
- Host:主机
参考链接:
https://documentation.portainer.io/v2.0/deploy/linux/
踩坑:
Portainer 无法访问
如果你捣鼓了半天环境,还是无法访问,且执行运行命令时出现以下错误:
别急,这是因为已经有一个同名的容器正在运行,可能是启动错了,有时会启动成 portainer-ce,而不是 portainer
先移除现有的 Portainer 容器(如果不再需要它):
docker rm -f portainer
执行这个命令后,将强制移除名为“portainer”的容器
再执行运行命令:
docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
就可以正常访问了,首次登录,需要创建管理员 admin 的密码,设置后登录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了