docker容器导出,并将导出镜像在另外一台设备上运行起来

本文详细介绍如何将已部署的Docker容器导出为镜像文件,并将其迁移至另一台设备上重新导入及启动的过程。重点包括镜像的导出与导入命令、启动容器时的配置参数等。

第一步:导出容器镜像
在源设备上已经存在部署好的docker容器,现在需要将其作为一个母镜像,在其他设备上进行导入,其实就是像作为一个安装的镜像。
在这里首先需要将镜像导出。

docker ps -a --no-trunc #不折叠任何列内容
CONTAINER ID                                                       IMAGE         COMMAND                           CREATED      STATUS          PORTS                                                                                                                 NAMES
88e1e9ea182a19fbd258b7146f18d65a8ab95aca9199392c26c7e3af2f1b8f35   nginx:1.15    "nginx -g 'daemon off;'"          2 days ago   Up 28 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:5800->5800/tcp, :::5800->5800/tcp   nginx
21ac1e8e32f4f6ef15663325973a27d4b6bbd569862f102839a2ba6d0f43cc05   php:7.4-fpm   "docker-php-entrypoint php-fpm"   2 days ago   Up 28 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp                                                                             php-fpm

##导出容器
docker export -o nginx-1.15.tar nginx  # docker export -o 导出镜像存放的地址  container_id/name

这里需要将容器的command列下的内容记下来后面需要用到.
第二步:将导出镜像上传到需要导入的设备,自行解决。
第三步:导入容器
1.导入容器镜像

docker import nginx-1.15.tar nginx:1.15 ## docker import 容器镜像地址 容器导入镜像名字
docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        1.15      42d88544a231   3 seconds ago    108MB

说明 容器名字冒号后面是tag,作为区分使用
2.启动镜像
这里基本和新部署docker容器一致,只有部分区别。

docker run --name nginx -d \ #--name 命名容器
--restart=always \ #启动模式
--network docker-net \ #使用的docker网络,
-p 443:443 \ # 映射端口,宿主机端口:容器内端口
-p 80:80 \
-p 5800:5800 \
-v /home/work/web:/var/www/html \ #映射目录 宿主机目录:容器类目录
-v /home/work/docker-conf/config/nginx/conf.d:/etc/nginx/conf.d/ \
-v /home/work/docker-conf/config/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/work/docker-conf/logs/nginx:/var/log/nginx/ \
 nginx:1.15 nginx -g 'daemon off;' # 使用的镜像 镜像名:镜像tag 

重点来了,在镜像名后面跟的,就是第一步中记录下来的command列的内容,这是重点,这里不添加的话,会让容器无法启动,或者一直是正在启动的状态。

Docker 中,你可以将一个容器导出为 tar 文件,然后将该文件导入到另一台服务器上作为镜像使用。以下是完整的导出和导入流程。 --- ### ✅ 步骤一:在源服务器上导出容器为 tar 文件 #### 1. 查看正在运行容器 ID ```bash docker ps ``` 输出示例: ``` CONTAINER ID IMAGE COMMAND ... abc123456789 myapp:latest "python app.py" ``` #### 2. 导出容器为 tar 文件 ```bash docker export abc123456789 > myapp_container.tar ``` > ⚠️ 注意:`docker export` 会导出容器的**文件系统快照**,但不包含容器的元数据(如 CMD、EXPOSE、环境变量等),因此导入后会丢失 Dockerfile 中的配置信息。 --- ### ✅ 步骤二:将 tar 文件传输到目标服务器 可以使用 `scp`、`rsync` 或其他方式传输文件: ```bash scp myapp_container.tar user@target_server:/path/to/ ``` --- ### ✅ 步骤三:在目标服务器上导入 tar 文件为镜像 ```bash docker import myapp_container.tar myapp:latest ``` - `myapp_container.tar`:导出容器文件 - `myapp:latest`:导入后的镜像名称和标签 --- ### ✅ 验证导入是否成功 ```bash docker images ``` 你应该能看到 `myapp:latest` 出现在列表中。 运行容器: ```bash docker run -d -p 8000:8000 myapp:latest ``` --- ### ✅ 补充说明:与 `docker save` / `docker load` 的区别 | 命令 | 用途 | 是否保留镜像历史和元数据 | |------|------|------------------------| | `docker export` / `docker import` | 容器文件系统导出/导入 | ❌ 不保留元数据 | | `docker save` / `docker load` | 镜像打包/解包 | ✅ 保留完整镜像信息 | --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值