内网与外网隔离,如何构建镜像并使用

在内外网完全隔离的环境下,构建并使用 Docker 镜像的核心逻辑是:在外网环境中下载、构建并打包成物理文件,通过物理介质(如 U 盘、网闸、安全传输通道)导入内网,最后在内网环境部署使用。

以下是标准的操作流程与命令指南:

🛠️ 第一阶段:在外网环境(准备与打包)

你需要在一台可以连接互联网的 Mac 或 Linux 电脑上完成基础镜像的拉取或自定义镜像的构建。

方案 A:直接使用官方/开源镜像(如 nginx, mysql)

  1. 拉取镜像:
    docker pull nginx:latest
    
  2. 将镜像导出为 tar 归档文件:
    docker save -o nginx_latest.tar nginx:latest
    

方案 B:有自定义源码,需要现场构建

  1. 在外网编写 Dockerfile 并构建:
    docker build -t my-app:v1 .
    
  2. 将构建好的自定义镜像导出:
    docker save -o my_app_v1.tar my-app:v1
    

💾 第二阶段:跨网传输(介质流转)

将生成的 .tar 文件(如 my_app_v1.tar)通过公司允许的安全合规通道(如刻录光盘、移动硬盘、向内网审计系统提交申请等)拷贝到内网的宿主机上。


🏗️ 第三阶段:在内网环境(导入与使用)

在内网的服务器或 Mac 电脑上,确保已安装好 Docker 运行环境。

1. 载入镜像文件

使用 load 命令将 .tar 文件还原为 Docker 本地镜像:

docker load -i my_app_v1.tar

导入成功后,终端会输出 Loaded image: my-app:v1

2. 验证镜像是否存在

docker images

检查列表中是否已经出现了 my-app 和对应的标签 v1

3. 运行容器

使用常规命令在内网启动该镜像:

docker run -d -p 8080:8080 --name my-running-app my-app:v1

🚀 进阶:内网团队规模化使用的最佳实践

如果内网有多台服务器需要使用这些镜像,或者有多名开发人员,频繁用 U 盘拷贝 tar 包效率极低。建议在内网搭建一个私有镜像仓库(Private Registry)。

  1. 在内网一台核心服务器上启动官方私有仓库:
    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    
  2. 在内网电脑上将导入的镜像重新打标签(指向内网仓库):
    # 假设内网仓库服务器 IP 为 192.168.1.100
    docker tag my-app:v1 192.168.1.100:5000/my-app:v1
    
  3. 推送到内网私有仓库:
    docker push 192.168.1.100:5000/my-app:v1
    
  4. 内网其他服务器直接拉取使用:
    docker pull 192.168.1.100:5000/my-app:v1
    

注意:若未使用 HTTPS,内网其他客户端需要在 Docker Desktop 设置中将 192.168.1.100:5000 加入到 insecure-registries 白名单中。


如果你在外网构建自定义镜像时,遇到了需要下载特定前端/后端依赖包(如 npm, maven, pip)的跨网打包难题,可以告诉我,我为你提供多阶段构建(Multi-stage build)的离线打包方案。


posted @ 2026-05-15 14:45  brookin  阅读(34)  评论(0)    收藏  举报