docker打包镜像并解包使用过程

把外网服务器上的docker搬到内网使用时,报了两个错误,外网容器到tar包都没有问题,在内网使用tar包的时候报了两个错误

cannot connect to the Docker daemon at is the docker daemon running
starting cantainer process caused:"exec:"/bin/sh":stat /bin/sh: no such file or diretory

发现是tar包到镜像的问题,我用的命令是

docker load --input xxx.tar

正确的是

docker load < xxx.tar

以下总结整个docker打包搬运流程如下:

1.将容器变为镜像 container -> image

docker commit a6364a8891bf test

可用参数

-a:提交的镜像作者;

-c:使用Dockerfile指令来闯将镜像;

-m:提交时时的说明文字;

-p:在commit时候,将容器暂停。

test是新建的镜像的名字

a6364a8891bf是将要打包的镜像

2.将镜像打包成tar包

docker save -o xxx.tar test # 当前路径下会生成一个xxx.tar
docker save -o test.tar test # 举例

3.将tar包再次压缩为gz包

tar zcvf test.tar.gz test.tar # 当前路径下生成一个test.tar.gz压缩包

4.将tar.gz移动到内网服务器

5.将tar.gz解压缩会生成一个tar包

tar -zxvf test.tar.gz

6.将tar包生成镜像

docker load < test.tar # 生成的镜像(image)跟之前打包的镜像名称一样

7.将镜像生成容器

docker run -it --name 容器名称 镜像名称 /bin/bash

docker load 和 docker import 的区别

docker load

导入镜像库存储文件到本地镜像库;镜像存储文件将保存完整记录,体积也会更大

docker import

导入一个容器快照到本地镜像库。容器快照将会丢弃所有的历史记录和元数据信息,

docker save 和 docker export 的区别

 docker save images_name :将一个镜像导出为文件,再使用docker load命令将文件导入为一个镜像,会保存该镜像的所有历史记录。

比docker export命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。

 docker export cotainer_id:将一个容器导出为文件,再使用docker import 命令将容器导入成为一个新的镜像。

但是相比docker save 命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照

参考文档:

docker import和docker load的区别是什么? - 帅胡 - 博客园

完整的docker打包流程 - 百度文库

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值