代码改变世界

制作Docker镜像的方法

2020-09-07 14:57  宋海宾  阅读(418)  评论(0编辑  收藏  举报

1.制作一个docker镜像

编写dockerfile文件,在目录下执行:

docker build -t runoob/centos:6.7 .

参数说明:

-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

我们可以使用新的镜像来创建容器

runoob@runoob:~$ docker run -t -i runoob/centos:6.7  /bin/bash

 docker tag 860c279d2fec runoob/centos:dev

 

1.2 镜像导出一

docker images

image导出镜像

docker save -o test.tar image_name

docker save image_name > /test.tar

 

把docker save的文件导入为镜像

docker load --input /test.tar

docker load不能对载入的镜像重命名

通过dcker save 导出的镜像就是一个分层的文件系统。Docker镜像实际上就是由这样的一层层文件进行叠加起来的,上层的文件会覆盖下层的同名文件。如果将docker save导出中的各层文件合并到一起,基本就是docker export导入的的内容。由于docker save里面的各层文件会存在很多重复的文件,所以通过save导出的文件比export导出的文件大100多M。

docker load必须要载入的是一个分层文件系统

 

1.3 容器导出二

命令格式为:

docker export [-o|--output[=""]] CONTATINER

 或:

docker export 容器id/name >文件名.tar

例如:

docker export -o test.img test

test.img : 这里可以导出tar文件 , 也可以导出二进制镜像文件img

  test : 需要导出的容器名, 通过docker ps查看

 docker export ocr-test >ocr-usr.tar

 

安装容器导出的文件

格式:

docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:YAG]]

例如:

docker import test.img test

docker import ocr-usr.tar registry.cn-zhangjiakou.aliyuncs.com/sddp/ocr-usr:1.01

test : 为镜像名

 docker export保存的是容器(container)

docker import用来载入容器包,

docker import可以为镜像指定新名称

 

1.4 比较

docker load必须要载入的是一个分层文件系统,而test.tar如果是由docker export 导出的,那么test.tar不具有这样的结构,因此无法载入。

而docker import仅仅是将tar包里面的文件复制进来,所以不管tar包里面的文件结构是怎样的,都可以载入进来,所以能够载入test.tar

import和load不能混用

open /var/lib/docker/tmp/docker-import-500852078/repositories: no such file or dir

 

用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。