Portainer
Portainer 是一个常见的 Docker 管理面板,提供容器、镜像、卷、网络、Compose Stack 等可视化管理能力。本文提供基于 Docker Compose 的部署示例、初始化步骤与配置原因说明,遵循本目录统一规范(单应用 compose + 复用 app-net)。
也可以参考官网的部署步骤:Install Portainer CE with Docker on Linux
1. 目录与挂载约定
/app
├─ docker-compose.portainer.yml
└─ portainer/
└─ data/
说明:
data:Portainer 持久化数据目录,用于保存管理员账号、环境配置、Endpoint 信息、证书及其他运行数据
2. 目录权限设置
Portainer 官方镜像通常以 root 身份访问 Docker Socket 和数据目录,一般无需额外指定 UID:GID。创建目录即可:
# 创建目录
mkdir -p /app/portainer/data
提示
Portainer 需要挂载 /var/run/docker.sock 才能直接管理当前宿主机的 Docker 环境。这相当于授予容器较高的宿主机控制权限,因此建议仅在可信环境中部署,并限制面板访问来源。
3. Compose 配置示例
/app/docker-compose.portainer.yml:
services:
portainer:
image: portainer/portainer-ce:lts
container_name: portainer
restart: unless-stopped
ports:
- "9443:9443"
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /app/portainer/data:/data
networks:
- app-net
networks:
app-net:
external: true
配置原因:
- 使用
portainer/portainer-ce:lts,比latest更稳定,适合作为长期运行的运维面板 9443是 Portainer 默认的 HTTPS 管理界面端口,首次部署后即可通过浏览器访问8000用于 Edge Agent 隧道能力;如果你只管理本机或普通 Docker 主机,也可以移除该端口映射- 挂载
/var/run/docker.sock后,Portainer 可以直接管理当前宿主机上的 Docker 资源 - 数据目录挂载到
/data,确保容器重建后初始化信息和管理配置不会丢失 - 复用
app-net,便于后续与 Nginx、反向代理、监控或其他业务容器协同
提示
如果你明确不使用 Edge Agent,可将 Compose 中的 8000:8000 删除,以减少不必要的对外暴露端口。
4. 启动与初始化
# 启动 Portainer
docker compose -f /app/docker-compose.portainer.yml up -d
# 查看容器状态
docker compose -f /app/docker-compose.portainer.yml ps
# 查看启动日志
docker logs -f portainer
启动完成后,访问:
https://<服务器IP>:9443
首次访问时,Portainer 默认会使用自签名证书,因此浏览器可能提示证书不受信任。这是官方默认行为,测试环境可先手动继续访问;生产环境建议后续改为受信任证书或放到反向代理后面统一处理 TLS。
首次初始化时,按页面向导完成以下操作:
- 创建管理员账号
- 设置管理员密码(建议使用强密码)
- 选择要管理的环境,单机部署通常直接选择本地 Docker 环境即可
5. 可选:自定义 SSL 证书
如果你希望在 Portainer 容器内直接使用自己的证书,可增加证书目录挂载,并为容器追加启动参数:
services:
portainer:
image: portainer/portainer-ce:lts
container_name: portainer
restart: unless-stopped
ports:
- "9443:9443"
- "8000:8000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /app/portainer/data:/data
- /app/portainer/certs:/certs:ro
command:
- --sslcert
- /certs/portainer.crt
- --sslkey
- /certs/portainer.key
networks:
- app-net
说明:
- 证书文件需为 PEM 格式
portainer.crt建议包含完整证书链- 如果已经有 Nginx、Traefik 或 Caddy 统一做 HTTPS 终止,通常不需要在 Portainer 容器内重复配置证书
6. 常用运维命令
# 启动或更新容器
docker compose -f /app/docker-compose.portainer.yml up -d
# 停止并删除容器
docker compose -f /app/docker-compose.portainer.yml down
# 重启服务
docker compose -f /app/docker-compose.portainer.yml restart
# 查看实时日志
docker logs -f portainer
7. 安全建议
- 尽量不要将
9443直接暴露到完全开放的公网,建议配合防火墙白名单、VPN 或反向代理鉴权 /var/run/docker.sock挂载权限很高,应避免把 Portainer 暴露给不可信用户- 生产环境优先使用
lts或更具体的小版本标签,不建议使用会漂移的latest - 升级前建议先备份
/app/portainer/data