基于 Portainer 的离线 Docker 镜像迁移部署指南

在企业内网或受限环境中,经常无法直接从公网拉取 Docker 镜像。这时可以通过“离线镜像迁移”的方式,将 B 机器上的镜像导入到 A 机器中使用。

本文以 plantuml/plantuml-server:jetty 为例,结合 Portainer 管理界面,讲解完整流程。


一、整体流程

B机器(有网)
    ↓ docker pull
    ↓ docker save
    ↓ 拷贝 tar 文件
A机器(内网)
    ↓ 上传到 Portainer
    ↓ 导入镜像
    ↓ 创建容器运行

二、在 B 机器导出镜像

1. 拉取镜像

docker pull plantuml/plantuml-server:jetty

2. 导出镜像

docker save -o plantuml-server.tar plantuml/plantuml-server:jetty

生成文件:

plantuml-server.tar

三、传输到 A 机器

可以使用以下方式:

  • scp
  • U 盘
  • Samba / FTP

示例:

scp plantuml-server.tar user@A机器IP:/home/user/

四、通过 Portainer 导入镜像

1. 登录 Portainer

http://A机器IP:9000

2. 进入镜像管理

左侧菜单:

Images

3. 上传镜像

  • 点击 Load image
  • 选择 plantuml-server.tar
  • 点击 Upload

上传完成后,你会看到镜像:

plantuml/plantuml-server:jetty

五、创建容器

1. 新建容器

进入:

Containers → Add container

2. 基本配置

  • Name:plantuml-server
  • Image:plantuml/plantuml-server:jetty

3. 端口映射

Host: 8080
Container: 8080

4. 启动

Deploy the container

六、访问验证

浏览器访问:

http://A机器IP:8080

接口测试:

http://A机器IP:8080/plantuml/png/SoWkIImgAStDuNBCoKnELT2rKt3AJx9IqBLJSCfFibBmICt9oGS0

如果能看到 UML 图片,说明部署成功。


七、常见问题

1. 端口无法访问

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

2. Docker 未启动

systemctl start docker

3. Portainer 上传失败

可以使用命令行导入:

docker load -i plantuml-server.tar

八、进阶建议

生产环境建议:

  • 不要直接暴露容器端口
  • 使用 Nginx 或 API 网关统一入口
  • 接入认证系统(如 OAuth2)
用户 → 网关 → PlantUML Server

九、总结

docker pull → docker save → 传输 → docker load / Portainer导入 → 运行容器

该方案适用于所有 Docker 镜像,是内网部署的重要基础能力。

发表回复