Docker镜像的创建、存出、载入

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

基于已有镜像的容器创建

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

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

主要参数选项包括:

  • -a ,–author=”” 作者信息
  • -m,–message=”” 提交信息
  • -p,–pause=true 提交是暂停容器运行

比如,先创建一个运行bash的ubuntu容器:

docker run –it ubuntu /bin/bash

root@d8990fec2141:/# touch test

root@d8990fec2141:/# exit

然后根据创建的这个容器来提交一个新的镜像,提交时需要用到容器ID。

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

如果成功的话,就会返回新镜像的长ID号,然后可以查看看在本地已有的镜像:

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE

testimage           latest              baea98d5a437        About a minute ago   188.3 MB

……

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

基于本地模板导入

也可以从操作系统模板文件导入一个镜像,比如使用OpenVZ提供的模板创建,OPENVZ下载模板在:http://openvz.org/Download/template/precreated。

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

1

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 < testimage.tar

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

镜像的上传

最后说点镜像的上传,镜像的管理方式非常像git,可以使用docker push命令上传自己本地镜像到仓库,默认上传到DockerHub官方仓库(需要登陆),命令格式:

docker push NAME[:TAG]

在上传之前一般会先为自己的镜像添加带自己名字(作者信息)的标签:

docker tag testimage:lastest zmc/testimage:lastest

docker pushzmc/testimage:lastest

有利于上传之后的区分。

我觉得无论是运维团队还是开发团队还是一个实验室,都有必要有一个自己的Docker仓库,可以存放符合自己需求的环境或系统镜像,可以实现快速部署。

转自:梦续代码

时间: 2024-10-11 19:08:09

Docker镜像的创建、存出、载入的相关文章

docker镜像的创建

获得更多资料欢迎进入我的网站或者 csdn或者博客园 昨天讲解了docker的安装与基本使用,今天给大家讲解下docker镜像的创建的方法,以及push到Docker Hub docker安装请点击右边:ubuntu15.04下安装docker 修改已有镜像 启动已下载镜像 peace@peace:~$ sudo docker run -t -i ubuntu:12.04 /bin/bash root@909634e032f9:/# cd /home #进入home目录建立文件夹 1.c roo

Docker镜像的创建及上传

Docker镜像的创建及上传 Docker镜像介绍 Docker镜像除了是Docker的核心技术之外也是应用发布的标准格式.一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中,进行操作,最常见的操作就是在容器中安装应用,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种,分别是基于已有镜像.基于本地模版以及基于Dockerfile创建. 基于已有镜像创建 基于已有的镜

创建超小的Golang docker 镜像

原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.正如DockerPool在免费Docker电子书Docker -- 从入门到实践中这样提到的: 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具

创建不用ssh密码登陆的docker镜像

操作系统:vm centos6.5 容器:docker 前提:可以ssh的docker镜像已经创建 第一种方法,手动创建 1.在宿主机上生成新的密钥和公钥 ###ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-foutput_keyfile] #ssh-keygen的具体用法参考官方文档 ssh-keygen -q -N "" -t dsa -f /root/.ssh/id_dsa 2.然后把公钥

Docker数据管理与网络通信之镜像的创建方法

Docker镜像的创建方法 Docker镜像除了是Docker的核心技术之外,也是应用发布的标准格式. 一个完整的Docker镜像可以支撑一个Docker容器的运行,在Doker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种,分别为基于已有镜像创建.基于本地模板创建以及基于Dockerfile创建. 基于已有镜像创建 基于已有镜像创建主要使用

Docker 镜像创建、私有仓库搭建和数据管理

Docker 镜像的创建方法 Docker 镜像除了是 Docker 的核心技术之外也是应用发布的标准格式.一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行,在 Docker 的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的三种方法 : 基于已有的镜像创建 基于本地模板创建 基于 Dockerfile 创建 (推荐) 基于已有的镜像创建

docker 四.使用docker镜像.

四.Docker镜像的使用 一.Docker 安装 1.1  查看系统版本 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.6 (Final) 1.2 使用epel yum源 [[email protected]~]#rpm -ivh http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm 1.3安装docker [[email prote

【Docker篇之一】Docker镜像及容器

一.Docker核心概念 1.镜像(image) Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为是一个面向Docker容器引擎的只读模板,比如一个镜像可以是一个完整的centos操作系统,也可以是一个安装了MySQL的应用程序,称之为一个镜像. 镜像文件用户可以自己创建和更新现有镜像,也可以从网上下载已经做好的应用镜像直接使用. 2.容器(Container) 容器是镜像的另一个运行实例,是独立运行的一个或一组应用以及他们所必须的运行环境,包括文件系统.系统库类.shell环境

Docker学习笔记 — Docker镜像

1. 基本概念 Docker镜像可以用来创建Docker容器,为一个只读的模板. Docker运行容器前需要本地存在对应的镜像,如果镜像不在本地,Docker会从镜像仓库下载. 2. 本地镜像 使用docker images显示本地已有镜像. 其中包含了如下信息:仓库,标记,ID,创建时间,大小. 3. 使用镜像启动容器 使用docker run启动一个容器. 在命令中我们也可以只指明ubuntu,这样就默认使用TAG为latest的版本.使用exit退出. 4. 搜索和获取镜像 使用docke