文章目录
-
- portainer-ce安装
-
- [📦 第一步:部署 Portainer CE 容器](#📦 第一步:部署 Portainer CE 容器)
- [🌐 第二步:首次访问与初始化设置](#🌐 第二步:首次访问与初始化设置)
- [🎯 第三步:核心功能使用](#🎯 第三步:核心功能使用)
- [💡 补充与建议](#💡 补充与建议)
- [🚀 全新部署步骤](#🚀 全新部署步骤)
-
- 第一步:停止并清理旧容器(可选)
- 第二步:创建数据卷
- [第三步:部署新的 Portainer CE 容器](#第三步:部署新的 Portainer CE 容器)
- 第四步:验证容器运行状态
- [第五步:防火墙放行 9443 端口](#第五步:防火墙放行 9443 端口)
- 第六步:浏览器访问并初始化
- [🧹 可选:清理旧容器数据](#🧹 可选:清理旧容器数据)
- [🔄 如何用 docker-compose 部署(备选)](#🔄 如何用 docker-compose 部署(备选))
- [✅ 新老端口对比](#✅ 新老端口对比)
- 异常问题
-
- [报错:Unable to find image 'portainer/portainer-ce:lts' locally](#报错:Unable to find image 'portainer/portainer-ce:lts' locally)
-
- [⬇️ 第一步:手动拉取镜像](#⬇️ 第一步:手动拉取镜像)
- [⚙️ 第二步:检查网络或换用其他标签](#⚙️ 第二步:检查网络或换用其他标签)
- [报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)](#报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers))
-
- [⚙️ 解决方案:配置 Docker 镜像加速器](#⚙️ 解决方案:配置 Docker 镜像加速器)
- [访问https://你的IP:9443 页面需要设置token 提示语Find this token in the Portainer server logs. See the setup token FAQ for more information.](#访问https://你的IP:9443 页面需要设置token 提示语Find this token in the Portainer server logs. See the setup token FAQ for more information.)
-
- [🔍 查找 Setup Token 的步骤](#🔍 查找 Setup Token 的步骤)
portainer-ce安装
portainer-ce (Portainer Community Edition) 是一个图形化的 Docker 管理工具,可以让你在网页上通过点击来管理容器、镜像、网络等,省去记忆和输入命令的麻烦。使用它的核心步骤是:部署 → 初始化 → 日常管理。
它的官方文档提供了清晰的安装指引,一个典型的使用流程是这样的:
📦 第一步:部署 Portainer CE 容器
由于你已经在用 Docker,这里给你一个基于官方推荐的部署命令,端口改为了标准的 HTTPS 端口 9443。
-
创建数据卷(持久化配置) :
为避免数据丢失,先创建一个Docker卷来存放Portainer的数据库。
bashdocker volume create portainer_data -
运行 Portainer 容器 :
使用下面的命令部署。它映射了标准的
9443(HTTPS) 和8000(可选,用于边缘计算) 端口,并挂载了Docker套接字以实现管理功能。bashdocker 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:lts部署完成后,可以通过
docker ps确认容器运行状态。
🌐 第二步:首次访问与初始化设置
-
访问 Web UI :
在浏览器访问
https://你的服务器IP:9443。由于使用的是自签名证书,浏览器会提示不安全,选择"高级"并继续访问即可。 -
创建管理员账户 :
首次访问会进入初始化页面,你需要为
admin用户设置一个符合复杂度要求的密码。 -
连接 Docker 环境 :
登录后,系统会让你选择要管理的环境。因为我们在启动时挂载了Docker套接字,所以直接选择 "Local " 或 "Docker" 环境并连接即可。这样 Portainer 就能管理这台服务器上的 Docker 了。
🎯 第三步:核心功能使用
初始化完成后,就可以通过 Portainer 的图形界面来管理 Docker 了:
- 管理容器 (Containers) :在左侧菜单点击 "Containers ",你可以看到所有容器的列表和状态。在这里可以轻松地 启动、停止、重启、删除 容器,查看日志,甚至通过网页终端进入容器内部执行命令。
- 管理镜像 (Images) :在 "Images " 页面,可以查看本地的镜像列表,或者从 Docker Hub 等仓库 拉取 (Pull) 新镜像,以及删除不再需要的镜像来节省空间。
- 管理数据卷 (Volumes) 和网络 (Networks):可以在对应的菜单下,创建、查看或删除由Docker管理的数据卷和网络,方便进行数据持久化和容器间通信配置。
- 部署应用栈 (Stacks) :这个功能相当于在网页上使用
docker-compose。你可以在 "Stacks " 页面,上传或直接粘贴docker-compose.yml文件的内容,然后一键部署一组相关联的容器(比如一个Web应用加它的数据库)。
💡 补充与建议
- 关于端口 :你之前用的是
9000端口,这是 Portainer 旧版本默认的 HTTP 端口。现在官方更推荐使用9443端口,它默认启用了 HTTPS (即便使用自签名证书),安全性更高。 - 数据持久化 :通过
docker volume create portainer_data创建的卷,或者使用-v /主机路径:/data绑定挂载的方式,都能确保你的 Portainer 配置(如用户、环境设置)在容器更新或删除后不会丢失。如果不确定之前用的哪种方式,可以用docker inspect portainer查看挂载情况。
好的,我来帮你用标准的 9443 端口 重新部署一个全新的 Portainer CE 容器。这个方案会使用官方推荐的 HTTPS 端口,安全性更高,并且数据与你之前的容器完全隔离,不会互相影响。
🚀 全新部署步骤
第一步:停止并清理旧容器(可选)
如果你想彻底清理旧的 Portainer 容器(portainer),可以执行:
bash
# 停止旧容器
docker stop portainer
# 删除旧容器(数据卷不会自动删除)
docker rm portainer
注意 :如果你还想保留旧容器作为备用,可以给它改个名字,比如
docker rename portainer portainer-old,这样新旧可以共存。
第二步:创建数据卷
为新的 Portainer 创建一个独立的数据卷,确保配置持久化:
bash
docker volume create portainer_data_new
第三步:部署新的 Portainer CE 容器
执行以下命令部署,使用 9443 端口 作为 HTTPS 访问入口,同时保留 8000 端口用于边缘计算(可选):
bash
docker run -d \
--name portainer-new \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data_new:/data \
portainer/portainer-ce:lts
命令解释:
| 参数 | 说明 |
|---|---|
-d |
后台运行 |
--name portainer-new |
容器名称,避免与旧的 portainer 冲突 |
--restart=always |
开机自启或异常退出后自动重启 |
-p 8000:8000 |
边缘计算(Edge)端口,用于远程管理 Agent(可选) |
-p 9443:9443 |
HTTPS 管理端口,官方推荐的主入口 |
-v /var/run/docker.sock:/var/run/docker.sock |
挂载 Docker 套接字,让 Portainer 能管理本机 Docker |
-v portainer_data_new:/data |
使用新创建的数据卷持久化配置 |
portainer/portainer-ce:lts |
使用长期支持(LTS)版本,更稳定 |
提示 :如果你还想同时支持 HTTP 访问(不推荐),可以额外加上
-p 9000:9000,但官方建议只用 HTTPS。
第四步:验证容器运行状态
bash
docker ps | grep portainer-new
你应该能看到类似这样的输出:
CONTAINER ID IMAGE COMMAND STATUS PORTS
xxxxxxxxxxxx portainer/portainer-ce:lts "/portainer" Up 2 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:9443->9443/tcp
第五步:防火墙放行 9443 端口
如果你使用的是 CentOS,需要放行 9443 端口:
bash
# 如果使用 firewalld
firewall-cmd --add-port=9443/tcp --permanent
firewall-cmd --reload
# 如果使用 iptables
iptables -I INPUT -p tcp --dport 9443 -j ACCEPT
service iptables save
第六步:浏览器访问并初始化
-
打开浏览器,访问:
https://<你的服务器IP>:9443 -
浏览器会提示 "您的连接不是私密连接" ,这是因为 Portainer 默认使用自签名证书。点击 "高级" → "继续前往"(不同浏览器提示略有不同)即可。
-
进入初始化页面后,创建
admin用户的密码(需要满足复杂度要求)。 -
选择 "Local" 环境连接,Portainer 会自动检测到你本机的 Docker 并接入管理。
🧹 可选:清理旧容器数据
如果确认新 Portainer 运行正常,可以删除旧的数据卷释放空间:
bash
# 查看所有数据卷
docker volume ls
# 如果旧的数据卷叫 portainer_data,可以删除
docker volume rm portainer_data
注意:删除数据卷会永久丢失旧 Portainer 的配置,确认不需要后再执行。
🔄 如何用 docker-compose 部署(备选)
如果你习惯用 docker-compose.yml 管理,可以用以下方式:
yaml
version: '3'
services:
portainer:
image: portainer/portainer-ce:lts
container_name: portainer-new
restart: always
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data_new:/data
volumes:
portainer_data_new:
然后运行:
bash
docker-compose up -d
✅ 新老端口对比
| 项目 | 旧容器 | 新容器 |
|---|---|---|
| 容器名 | portainer |
portainer-new |
| 访问协议 | HTTP | HTTPS |
| 宿主机端口 | 5002 (映射到容器 9000) |
9443 (直接对应) |
| 数据卷 | portainer_data(或其他) |
portainer_data_new |
| 安全性 | 较低(明文传输) | 较高(加密传输) |
部署完成后,通过 https://你的IP:9443 访问,所有功能都能正常使用。如果遇到访问不了的情况,可以先检查防火墙和 SELinux(如果启用的话)。
异常问题
报错:Unable to find image 'portainer/portainer-ce:lts' locally
这个报错信息意味着 portainer/portainer-ce:lts 这个镜像在你的本地找不到。根据 Portainer 的官方文档,lts 是一个有效的标签,代表长期支持版本。出现这种情况,通常只需要手动将镜像拉取到本地就能解决问题。
你可以按顺序试试下面的方法。
⬇️ 第一步:手动拉取镜像
最直接的解决办法是使用 docker pull 命令,明确地将 lts 标签的镜像下载到本地。
bash
docker pull portainer/portainer-ce:lts
⚙️ 第二步:检查网络或换用其他标签
如果因为网络问题导致 docker pull 总是失败,可以尝试以下替代方案。
-
检查网络:确认你的服务器能够正常访问外网,尤其是 Docker Hub。如果是在内网环境,可能需要配置镜像加速器。
-
使用
latest标签 :latest标签通常指向最新的稳定版本。你可以尝试换成这个标签来拉取:bashdocker pull portainer/portainer-ce:latest然后用
portainer/portainer-ce:latest替换你run命令中的portainer/portainer-ce:lts。 -
指定具体版本号 :
lts标签本身会指向具体的版本号,你也可以在 Docker Hub 上查看最新的版本号是什么,然后用那个版本号拉取(例如portainer/portainer-ce:2.39.1)。
报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
这个 context deadline exceeded 错误,意味着 Docker 在与官方镜像仓库(Docker Hub)建立连接时网络超时了。这在国内是访问国外服务器时常遇到的问题,尤其是在网络环境不稳定或存在防火墙限制时。
核心原因是 Docker 无法在规定时间内连接到 registry-1.docker.io,通常与网络延迟高、防火墙限制或 DNS 解析慢有关。要解决它,最有效的方法是为 Docker 配置一个国内的镜像加速器,这相当于为你的下载请求找到了一个更快的本地通道。
⚙️ 解决方案:配置 Docker 镜像加速器
你可以按照以下步骤操作,这是解决这类超时问题最标准的方案。
-
编辑 Docker 配置文件 :在终端中,使用
vim或nano等文本编辑器打开 Docker 的配置文件daemon.json。bashsudo vim /etc/docker/daemon.json如果这个文件不存在,可以手动创建它。
-
添加镜像加速器地址:在文件中,输入或修改为以下内容,并加入一个或多个可靠的镜像加速器地址。
json{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.unsee.tech", "https://docker.1panel.live" ] }这里列出了几个当前可用性较高的公共加速器供你选择。你也可以根据自己的云服务商(如阿里云、腾讯云)在其控制台获取专属的加速器地址,通常速度会更稳定。
-
保存并退出:保存文件后,退出编辑器。
-
重启 Docker 服务:执行以下命令,让配置更改生效。
bashsudo systemctl daemon-reload sudo systemctl restart docker -
重新拉取镜像:完成以上步骤后,再次尝试拉取 Portainer CE 的 LTS 镜像。
bashdocker pull portainer/portainer-ce:lts
访问https://你的IP:9443 页面需要设置token 提示语Find this token in the Portainer server logs. See the setup token FAQ for more information.
刚部署好的 Portainer 在初始化时要求输入 Token,这是一种安全机制,防止任何知道访问地址的人都能随意设置管理员账号。
这个 Setup Token 是在 Portainer 容器第一次启动时,由系统自动生成并打印在容器日志里的。你需要从服务器的 Docker 日志中找到它。
🔍 查找 Setup Token 的步骤
-
查看容器日志 :在服务器终端执行以下命令,查看 Portainer 容器的日志,并筛选出包含
setup_token=的那一行:bashdocker logs portainer-new 2>&1 | grep "setup_token="注意:如果你的容器名不是
portainer-new,请替换成你实际使用的容器名。 -
复制 Token :命令执行后,你会看到类似下面的输出,复制
=后面的那一长串 Token 即可。[INFO] [cmd,main] [timestamp] [server] [setup_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...] -
粘贴并初始化:将复制的 Token 粘贴到浏览器页面的输入框中,然后就可以设置你的管理员账号了。