Ubuntu系统Docker与Portainer部署全指南

发布时间:2026/10/26 16:10:32
Ubuntu系统Docker与Portainer部署全指南

1. Docker与Portainer部署指南

在当今的开发和运维环境中,容器化技术已经成为不可或缺的一部分。作为一名长期使用容器技术的从业者,我经常被问到如何快速搭建一个可靠的容器管理环境。本文将分享我在Ubuntu系统上部署Docker引擎和Portainer管理界面的完整流程,包含从基础安装到高级配置的全部细节。

2. 环境准备与Docker安装

2.1 系统要求检查

在开始安装前,我们需要确保系统满足基本要求:

  • Ubuntu 20.04/22.04 LTS版本(其他版本可能需要进行额外配置)
  • 至少2GB内存(4GB以上为佳)
  • 20GB可用磁盘空间
  • 具有sudo权限的用户账户

首先更新系统软件包:

sudo apt update && sudo apt upgrade -y

2.2 Docker引擎安装

Docker提供了多种安装方式,我推荐使用官方仓库安装,这能确保获取最新稳定版本:

  1. 安装必要的依赖包:
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  1. 添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定版仓库:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装Docker引擎:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
  1. 验证安装是否成功:
sudo docker run hello-world

提示:如果看到"Hello from Docker!"消息,说明安装成功。如果遇到权限问题,可以将当前用户加入docker组:sudo usermod -aG docker $USER,然后重新登录。

2.3 Docker服务配置优化

安装完成后,建议进行一些基础配置优化:

  1. 配置Docker守护进程:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
  1. 重启Docker服务使配置生效:
sudo systemctl restart docker sudo systemctl enable docker

3. Portainer管理界面部署

3.1 Portainer简介

Portainer是一个轻量级的Docker管理UI,它提供了直观的图形界面来管理Docker环境。相比命令行,Portainer特别适合以下场景:

  • 团队协作环境
  • 需要快速查看容器状态
  • 不熟悉Docker命令的新手
  • 需要集中管理多个Docker主机

3.2 Portainer社区版安装

我们将使用Docker来部署Portainer社区版:

  1. 创建Portainer使用的数据卷:
docker volume create portainer_data
  1. 启动Portainer容器:
docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest

注意:这里我们同时映射了8000和9443端口。8000端口用于Edge代理功能,9443端口用于Web UI访问。

3.3 初始配置与安全加固

  1. 访问Portainer界面: 打开浏览器访问https://<服务器IP>:9443,首次访问会提示创建管理员账户。

  2. 安全建议配置:

  • 使用强密码(至少12位,包含大小写字母、数字和特殊字符)
  • 启用HTTPS(Portainer默认使用自签名证书)
  • 配置会话超时时间(建议15-30分钟)
  • 定期备份portainer_data卷
  1. 配置本地Docker环境: 登录后,Portainer会提示连接环境。选择"Docker Standalone"并点击"Connect"即可。

4. 高级配置与优化

4.1 镜像加速配置

国内用户可能会遇到镜像拉取慢的问题,可以通过配置镜像加速解决:

  1. 修改daemon.json文件:
sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://mirror.baidubce.com" ], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
  1. 重启Docker服务:
sudo systemctl restart docker

4.2 Portainer业务配置

  1. 模板配置: Portainer提供了应用模板功能,可以快速部署常见应用。建议添加常用模板:
  • 进入Settings > App Templates
  • 添加官方模板库:https://raw.githubusercontent.com/portainer/templates/master/templates.json
  1. 用户与团队管理: 对于生产环境,建议配置细粒度的访问控制:
  • 创建不同角色的用户(管理员、运维、开发等)
  • 配置资源访问限制
  • 设置团队并分配相应权限
  1. 监控与告警: Portainer提供基础监控功能,可以:
  • 查看容器资源使用情况
  • 配置简单的告警规则
  • 查看容器日志

5. 常见问题与解决方案

5.1 Docker安装问题

问题1:依赖冲突解决方案:

sudo apt --fix-broken install sudo apt autoremove

问题2:无法启动docker服务检查命令:

sudo systemctl status docker journalctl -xe

5.2 Portainer访问问题

问题1:无法访问Web界面检查步骤:

  1. 确认防火墙放行了9443端口
  2. 检查容器是否正常运行:docker ps -a
  3. 查看容器日志:docker logs portainer

问题2:忘记管理员密码重置方法:

docker stop portainer docker run --rm -v portainer_data:/data portainer/helper-reset-password docker start portainer

5.3 性能优化建议

  1. 限制容器资源:
docker update --memory 512M --memory-swap 1G <容器名>
  1. 清理无用资源:
docker system prune -a --volumes
  1. 日志轮转配置: 在/etc/docker/daemon.json中添加:
"log-opts": { "max-size": "50m", "max-file": "3" }

6. 生产环境部署建议

在实际生产环境中部署时,我建议考虑以下额外措施:

  1. 高可用部署:
  • 使用Docker Swarm或Kubernetes集群
  • 部署多个Portainer实例并配置负载均衡
  • 定期备份Portainer数据卷
  1. 安全加固:
  • 配置TLS客户端证书认证
  • 启用审计日志
  • 定期更新Docker和Portainer版本
  1. 监控集成:
  • 配置Prometheus监控Docker指标
  • 使用Grafana展示监控数据
  • 设置关键指标告警
  1. 备份策略:
# 备份Portainer数据 docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar czf /backup/portainer-backup-$(date +%Y%m%d).tar.gz /data # 备份Docker配置 sudo tar czf docker-config-$(date +%Y%m%d).tar.gz /etc/docker

7. 扩展功能与进阶使用

7.1 Portainer业务模板开发

Portainer支持自定义模板,可以简化团队内部常用应用的部署:

  1. 创建模板JSON文件:
{ "version": "2", "templates": [ { "type": 1, "title": "WordPress Stack", "description": "WordPress with MySQL", "note": "Deploys a WordPress instance with a MySQL database", "categories": ["CMS"], "platform": "linux", "logo": "https://portainer.io/images/logos/wordpress.png", "repository": { "url": "https://github.com/portainer/templates", "stackfile": "stacks/wordpress/docker-compose.yml" } } ] }
  1. 在Portainer中添加自定义模板库

7.2 API集成

Portainer提供了完整的REST API,可以实现自动化管理:

  1. 获取API密钥:
  • 登录Portainer
  • 进入Users设置
  • 生成API密钥
  1. 示例API调用(获取容器列表):
curl -X GET \ -H "X-API-Key: your-api-key" \ https://your-portainer-url/api/endpoints/1/docker/containers/json

7.3 多环境管理

Portainer可以管理多个Docker环境:

  1. 添加新环境:
  • 远程Docker主机需要开启TCP端口(建议配置TLS)
  • 在Portainer中添加新Endpoint
  • 配置访问凭证
  1. 环境分组:
  • 创建环境组(如开发、测试、生产)
  • 配置统一的访问策略

8. 版本升级与维护

8.1 Docker引擎升级

  1. 检查当前版本:
docker version
  1. 升级步骤:
sudo apt update sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io

8.2 Portainer升级

  1. 停止并删除旧容器:
docker stop portainer docker rm portainer
  1. 拉取新版本镜像:
docker pull portainer/portainer-ce:latest
  1. 重新创建容器(使用原有数据卷):
docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest

8.3 定期维护任务

建议设置以下定期维护任务:

  1. 资源清理(每周):
docker system prune -f
  1. 安全检查(每月):
docker scan <镜像名>
  1. 备份验证(每日):
# 验证备份文件完整性 tar tf portainer-backup-*.tar.gz