Docker镜像的建立、存出、载入的方法

建立镜像的方法有三种:基于已有镜像的容器建立、基于本地模板导入、基于Dockerfile建立,本博文讲解前两种。html

基于已有镜像的容器建立node

该方法是使用docker commit命令,其命令格式为:git

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

主要参数选项包括:docker

  • -a ,–author=”” 做者信息ubuntu

  • -m,–message=”” 提交信息bash

  • -p,–pause=true 提交是暂停容器运行运维

好比,先建立一个运行bash的ubuntu容器:ide

docker run –it ubuntu /bin/bash

root@d8990fec2141:/# touch test

root@d8990fec2141:/# exit

而后根据建立的这个容器来提交一个新的镜像,提交时须要用到容器ID。学习

docker commit –m “test” –a “zmc” d8990fec2141 testimage

若是成功的话,就会返回新镜像的长ID号,而后能够查看看在本地已有的镜像:spa

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

testimage      latest       baea98d5a437    About a minute ago  188.3 MB

……

第三行就是刚刚建立的镜像。

PS:利用此容器建立的镜像Id与此容器的镜像id不一样,可知它们不是同一镜像。

基于本地模板导入

也能够从操做系统模板文件导入一个镜像,好比使用OpenVZ提供的模板建立,OPENVZ下载模板在:http://openvz.org/Download/template/precreated

我尝试使用了Ubuntu14.04的模板: 

wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz

下载完以后就能够导入了:

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

其实只是两个命令,不过很显而易见,就不加解释了。成功的话,就会返回根据模板创建的镜像的长ID

sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04

ab80404d13d580965b9919b640169ccb585ea7884e6aa9de1ec043075c65fe35

而后就能够查看本地的镜像:

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    56 seconds ago   215.4 MB

testimage      latest       baea98d5a437    29 minutes ago   188.3 MB

….

其实能够看出,虽然模板才75M,但建立的镜像并不小。

镜像的存出和载入

能够利用docker save和docker命令来存出和载入镜像。

存出镜像

若是想要把镜像存出到本地文件,可使用docker save命令,例如,存出本地的刚才建立的testimage:lastest为镜像文件testimage.tar文件:

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

testimage      latest       baea98d5a437    25 minutes ago   188.3 MB

ubuntu       latest       fa81ed084842    3 days ago     188.3 MB

….

docker save –o /data/testimage.tar testimage:latest

上面的第6行就是存出代码,这时在/data下就有一个testimage.tar文件,这时咱们把本地镜像rmi掉,而后尝试载入。

载入镜像

删除镜像以后的状态:

ubuntu@VM–223–238–ubuntu:/data$ docker rmi baea98d5a437

Untagged: testimage:latest

Deleted: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5b

ubuntu@VM–223–238–ubuntu:/data$ docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    5 minutes ago    215.4 MB

而后载入镜像:

docker load —input testimage.tar

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    6 minutes ago    215.4 MB

testimage      latest       baea98d5a437    35 minutes ago   188.3 MB

第一行就是载入镜像,还能够简化写成:

docker load —input testimage.tar

docker images

REPOSITORY     TAG         IMAGE ID      CREATED       VIRTUAL SIZE

ubuntu       14.04        ab80404d13d5    6 minutes ago    215.4 MB

testimage      latest       baea98d5a437    35 minutes ago   188.3 MB

载入操做将会导入镜像以及相关的元数据信息(包括标签等)。

镜像的上传

最后说点镜像的上传,镜像的管理方式很是像git,可使用docker push命令上传本身本地镜像到仓库,默认上传到DockerHub官方仓库(须要登录),命令格式:

docker push NAME[:TAG]

在上传以前通常会先为本身的镜像添加带本身名字(做者信息)的标签:

docker tag testimage:lastest zmc/testimage:lastest

docker pushzmc/testimage:lastest

有利于上传以后的区分。

我以为不管是运维团队仍是开发团队仍是一个实验室,都有必要有一个本身的Docker仓库,能够存放符合本身需求的环境或系统镜像,能够实现快速部署。

以上就是本文的所有内容,但愿对你们的学习有所帮助,也但愿你们多多支持脚本之家。

您可能感兴趣的文章:

文章同步发布: https://www.geek-share.com/detail/2754968176.html

参考文章:

相关文章
相关标签/搜索