从零开始:CentOS 7.6环境下Portainer CE的终极部署指南
当你第一次面对一台裸机的CentOS 7.6服务器,想要部署Docker管理工具Portainer时,是否感到无从下手?本文将带你走过从系统准备到Portainer完美运行的每一步,特别针对国内网络环境和初学者可能遇到的各类"坑"提供解决方案。
1. 环境准备与基础检查
在开始部署之前,我们需要确保系统环境满足Portainer运行的基本要求。CentOS 7.6虽然是一个稳定的平台,但默认配置可能需要一些调整。
首先检查系统内核版本,Portainer需要Linux内核3.10或更高版本:
uname -r
典型输出应该是3.10.0-1160.el7.x86_64或类似版本号。如果你的内核版本低于3.10,建议先升级系统。
接下来,确认SELinux状态:
sestatus
如果SELinux处于enforcing模式,我们有两种选择:
- 临时禁用(重启后失效):
setenforce 0 - 永久禁用(需重启生效):
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
提示:在生产环境中,建议保持SELinux启用并配置正确的策略,而非直接禁用。但对于初学者测试环境,禁用可以避免许多权限问题。
2. Docker与Docker Compose安装
Portainer作为Docker的管理工具,自然需要先安装Docker引擎。以下是针对CentOS 7.6的完整安装步骤:
2.1 安装Docker CE
-
卸载旧版本(如有):
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -
安装必要工具包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -
添加Docker官方仓库(国内用户建议使用阿里云镜像加速):
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -
安装Docker CE:
sudo yum install -y docker-ce docker-ce-cli containerd.io -
启动Docker并设置开机自启:
sudo systemctl start docker sudo systemctl enable docker -
验证安装:
sudo docker run hello-world如果看到"Hello from Docker!"消息,说明安装成功。
2.2 安装Docker Compose
虽然Portainer可以通过纯Docker命令运行,但使用Docker Compose能更好地管理服务配置。以下是安装步骤:
-
下载Docker Compose二进制文件(国内用户可使用代理):
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -
添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose -
验证安装:
docker-compose --version应输出类似
docker-compose version 1.29.2, build xxxxxxx的信息。
3. Portainer CE部署实战
现在我们已经准备好了所有前置条件,可以开始部署Portainer CE了。我们将采用Docker Compose方式部署,这是目前最推荐的方法。
3.1 准备持久化存储
Portainer需要持久化存储其配置数据,我们先创建必要的目录结构:
sudo mkdir -p /opt/portainer/data
sudo chmod -R 775 /opt/portainer
注意:在生产环境中,你应该为这些目录设置更严格的权限,并考虑使用专门的存储卷。
3.2 编写Docker Compose文件
创建一个docker-compose.yml文件:
vim /opt/portainer/docker-compose.yml
文件内容如下(根据你的架构选择相应配置):
x86_64架构:
version: '3'
services:
portainer:
image: portainer/portainer-ce:2.18.4
container_name: portainer
restart: always
ports:
- "9026:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/portainer/data:/data
ARM64架构:
version: '3'
services:
portainer:
image: portainer/portainer-ce:2.18.4-linux-arm64
container_name: portainer
restart: always
ports:
- "9026:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/portainer/data:/data
3.3 启动Portainer服务
在包含docker-compose.yml文件的目录下执行:
docker-compose up -d
这将下载Portainer镜像(如果尚未存在)并启动服务。你可以通过以下命令检查服务状态:
docker ps
应该能看到portainer容器正在运行。
4. 防火墙配置与初次访问
4.1 配置防火墙
CentOS 7默认使用firewalld,我们需要开放Portainer使用的端口(默认为9026):
sudo firewall-cmd --permanent --add-port=9026/tcp
sudo firewall-cmd --reload
验证端口是否开放:
sudo firewall-cmd --list-ports
4.2 初次访问Portainer
现在你可以通过浏览器访问Portainer了:
http://你的服务器IP:9026
首次访问时,系统会提示你创建管理员账户。填写所需信息后,点击"Create user"。
常见问题:如果页面显示"Unable to retrieve server settings"或长时间加载,可能是SELinux或防火墙问题。尝试临时禁用它们进行排查。
5. 离线环境部署方案
对于无法连接Docker Hub的环境,我们可以使用离线安装包。以下是详细步骤:
5.1 准备离线资源
首先,在有网络的环境中下载所需资源:
-
Portainer CE镜像(根据架构选择):
- x86_64:
docker pull portainer/portainer-ce:2.18.4 - ARM64:
docker pull portainer/portainer-ce:2.18.4-linux-arm64
- x86_64:
-
保存镜像为文件:
docker save -o portainer-ce-2.18.4.tar portainer/portainer-ce:2.18.4 -
将以下文件打包:
- 保存的镜像文件
- docker-compose.yml文件
- 任何自定义配置文件
5.2 离线环境部署
将打包文件传输到目标服务器后:
-
加载Docker镜像:
docker load -i portainer-ce-2.18.4.tar -
创建必要的目录结构:
mkdir -p /opt/portainer/data -
放置docker-compose.yml文件到/opt/portainer/
-
启动服务:
docker-compose up -d
6. 高级配置与优化
6.1 使用Nginx反向代理
在生产环境中,建议通过Nginx等反向代理访问Portainer,而不是直接暴露端口。以下是基本配置示例:
server {
listen 80;
server_name portainer.yourdomain.com;
location / {
proxy_pass http://localhost:9026;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
6.2 配置HTTPS
安全起见,应该为Portainer启用HTTPS。你可以使用Let's Encrypt免费证书:
-
安装certbot:
sudo yum install -y epel-release sudo yum install -y certbot python2-certbot-nginx -
获取证书:
sudo certbot --nginx -d portainer.yourdomain.com -
证书会自动配置到Nginx,并设置自动续期。
6.3 备份与恢复
Portainer的所有配置都存储在/opt/portainer/data目录中。要备份:
tar -czvf portainer-backup-$(date +%Y%m%d).tar.gz /opt/portainer/data
要恢复,只需解压备份文件到原位置:
tar -xzvf portainer-backup-20230601.tar.gz -C /
7. 日常管理与故障排除
7.1 常用管理命令
-
查看Portainer日志:
docker logs -f portainer -
重启Portainer服务:
docker-compose restart -
更新Portainer版本:
- 停止并删除旧容器:
docker-compose down - 拉取新镜像:
docker-compose pull - 重新启动:
docker-compose up -d
- 停止并删除旧容器:
7.2 常见问题解决
问题1:无法通过9000端口访问Portainer
- 检查防火墙设置
- 确认Docker Compose文件中端口映射正确
- 检查Portainer容器是否正常运行
问题2:登录后显示空白页面
- 清除浏览器缓存
- 检查浏览器控制台是否有错误
- 尝试使用隐私模式访问
问题3:无法连接Docker守护进程
- 确认
/var/run/docker.sock已正确挂载 - 检查Docker服务是否运行
- 尝试重启Docker服务
在实际使用中,我发现最常遇到的问题都与权限相关。特别是在CentOS上,SELinux和文件系统权限经常会导致各种"奇怪"的问题。一个实用的技巧是在遇到问题时,先尝试用docker logs查看Portainer的日志输出,这通常能快速定位问题根源。
385



被折叠的 条评论
为什么被折叠?



