[1365]docker界面管理portainer-ce

文章目录

    • portainer-ce安装
      • [📦 第一步:部署 Portainer CE 容器](#📦 第一步:部署 Portainer CE 容器)
      • [🌐 第二步:首次访问与初始化设置](#🌐 第二步:首次访问与初始化设置)
      • [🎯 第三步:核心功能使用](#🎯 第三步:核心功能使用)
      • [💡 补充与建议](#💡 补充与建议)
    • [🚀 全新部署步骤](#🚀 全新部署步骤)
    • 异常问题
      • [报错: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

  1. 创建数据卷(持久化配置)

    为避免数据丢失,先创建一个Docker卷来存放Portainer的数据库。

    bash 复制代码
    docker volume create portainer_data
  2. 运行 Portainer 容器

    使用下面的命令部署。它映射了标准的 9443 (HTTPS) 和 8000 (可选,用于边缘计算) 端口,并挂载了Docker套接字以实现管理功能。

    bash 复制代码
    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:lts

    部署完成后,可以通过 docker ps 确认容器运行状态。

🌐 第二步:首次访问与初始化设置

  1. 访问 Web UI

    在浏览器访问 https://你的服务器IP:9443。由于使用的是自签名证书,浏览器会提示不安全,选择"高级"并继续访问即可。

  2. 创建管理员账户

    首次访问会进入初始化页面,你需要为 admin 用户设置一个符合复杂度要求的密码。

  3. 连接 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

第六步:浏览器访问并初始化

  1. 打开浏览器,访问:https://<你的服务器IP>:9443

  2. 浏览器会提示 "您的连接不是私密连接" ,这是因为 Portainer 默认使用自签名证书。点击 "高级""继续前往"(不同浏览器提示略有不同)即可。

  3. 进入初始化页面后,创建 admin 用户的密码(需要满足复杂度要求)。

  4. 选择 "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 标签通常指向最新的稳定版本。你可以尝试换成这个标签来拉取:

    bash 复制代码
    docker 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 镜像加速器

你可以按照以下步骤操作,这是解决这类超时问题最标准的方案。

  1. 编辑 Docker 配置文件 :在终端中,使用 vimnano 等文本编辑器打开 Docker 的配置文件 daemon.json

    bash 复制代码
    sudo vim /etc/docker/daemon.json

    如果这个文件不存在,可以手动创建它。

  2. 添加镜像加速器地址:在文件中,输入或修改为以下内容,并加入一个或多个可靠的镜像加速器地址。

    json 复制代码
    {
      "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.unsee.tech",
        "https://docker.1panel.live"
      ]
    }

    这里列出了几个当前可用性较高的公共加速器供你选择。你也可以根据自己的云服务商(如阿里云、腾讯云)在其控制台获取专属的加速器地址,通常速度会更稳定。

  3. 保存并退出:保存文件后,退出编辑器。

  4. 重启 Docker 服务:执行以下命令,让配置更改生效。

    bash 复制代码
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  5. 重新拉取镜像:完成以上步骤后,再次尝试拉取 Portainer CE 的 LTS 镜像。

    bash 复制代码
    docker 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 的步骤
  1. 查看容器日志 :在服务器终端执行以下命令,查看 Portainer 容器的日志,并筛选出包含 setup_token= 的那一行:

    bash 复制代码
    docker logs portainer-new 2>&1 | grep "setup_token="

    注意:如果你的容器名不是 portainer-new,请替换成你实际使用的容器名。

  2. 复制 Token :命令执行后,你会看到类似下面的输出,复制 = 后面的那一长串 Token 即可。

    复制代码
    [INFO] [cmd,main] [timestamp] [server] [setup_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...]
  3. 粘贴并初始化:将复制的 Token 粘贴到浏览器页面的输入框中,然后就可以设置你的管理员账号了。