内网中部署Docker项目
内网中部署Docker项目
1 前言
由于内网中无法直接拉取镜像,所以需要将镜像文件打包后传入内网中,再在内网中加载出来,基于docker的docekr save和docker load实现,下面是具体步骤。
2 实施步骤
2.1 在外网环境导出所有镜像
利用 docker-compose 管理的容器直接提取镜像并导出,避免处理变量问题:
命令解释:
docker-compose ps -q:获取当前docker-compose管理的所有容器 ID;xargs docker inspect --format '':从容器信息中提取实际使用的镜像名(已解析变量,如docker.io/netboxcommunity/netbox:v4.4-3.4.1);sort | uniq:去重(避免重复导出相同镜像,如netbox和netbox-worker可能共用一个镜像);xargs docker save -o netbox_images.tar:将所有去重后的镜像导出到netbox_images.tar。
1
2
3
4
5
# 进入 docker-compose.yml 所在目录
cd /path/to/netbox-docker
# 导出所有由 docker-compose 管理的镜像(去重后合并为一个 tar 包)
docker-compose ps -q | xargs docker inspect --format '' | sort | uniq | xargs docker save -o netbox_images.tar
2.2 传输文件到内网
各显神通。
2.3 在内网环境导入镜像
登录内网机器,进入存放 netbox_images.tar 的目录,执行导入:
1
docker load -i netbox_images.tar
导入完成后,用 docker images 确认镜像已存在(包括 netboxcommunity/netbox:v4.4-3.4.1、postgres:17-alpine、valkey/valkey:8.1-alpine 等)。
2.4 启动服务
1
docker-compose up -d
3 总结
在内网环境中部署真的才能体会到docker强大的迁移性,基本都是一条命令跑起来服务,像这个项目是netbox,有redis、MySQL还有主进程,都是基于docker compose进行了编排,把镜像都加载好了直接就能一键启动,非常的便捷。
本文由作者按照
CC BY 4.0
进行授权