直接拿来用!一文学会 Docker 镜像


直接拿来用!一文学会 Docker 镜像

文章插图
作者 | 羽生结弦
责编 | 胡雪蕊
出品 | CSDN(ID:CSDNnews)
Docker 是一个基于Go语言开发的开源应用容器,开发者可以打包应用和相关包,到一个轻量级 、可移植的容器中,并且可以发布到任何机器,实现虚拟化,完全使用沙箱机制,而且性能开销很低 。
其中镜像是Docker三大核心概念中最重要的一个 。镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数 。镜像是容器在本地运行的基础,Dokcer运行容器前需要本地存在对应的镜像,如果不存在对应的镜像,Docker 会先从默认的镜像仓库下载(如果用户不希望Docker从默认的镜像仓库下载镜像的话,可以使用自定义镜像仓库) 。这篇文章将讲解镜像的拉取、查看镜像信息、搜索镜像、删除镜像和镜像的导入导出 。
 
1、拉取镜像要想拉取镜像,就要用到 pull命令,该命令的语法为:
 docker[image]pull NAME[:TAG]
注:pull 命令中参数 NAME 表示镜像仓库名称,TAG 表示镜像标签(一般表示为版本)
举个例子来看一下pull命令怎么使用 。我们从默认的镜像仓库与拉取 Ubuntu 16.04,输入如下命令:
 docker pull ubuntu:16.04
执行上面的命令,将会看到如下输出:
直接拿来用!一文学会 Docker 镜像

文章插图
注1:如果不显示指定TAG,Docker默认使用latest标签,下载镜像仓库中最新的镜像
注2:latest标签会随着最新版本的变化而变化,例如昨天某镜像的版本是 1.0,今天上传了2.0版本的镜像,那么latest标签指的就是2.0这个版本
我们从前面的图中可以看到,在镜像下载过程中出现了4行,这四行代表着镜像文件有4个层,每层的唯一id就是每行开头的那串字符串(例如:35b42117c431) 。当不同的镜像存在相同的层时,本地仅存出一份内容,这样就叫少了存储空间 。
一般情况下,如果是从官方仓库注册服务器下载镜像文件时是不需要加上仓库注册服务器地址的,但是如果是从非官方仓库注册服务器下载的话,就需要加上注册服务器地址,例如我们要从阿里云下载ubuntu16.04的镜像,那么我们应该这样写命令:
 docker pull registry.cn-shanghai.aliyuncs.com/ubuntu:16.04
常用的pull命令参数有如下两个:
直接拿来用!一文学会 Docker 镜像

文章插图
 2、查看镜像信息查看镜像信息所用到的命令是 images、ls和inspect命令 。比如要查看当前电脑上存在的镜像,可以这么做:
 docker images
或者
 docker image ls
执行上面的命令,将会列出当前系统中存在的镜像,如下图
直接拿来用!一文学会 Docker 镜像

文章插图
从上图中可以看出如下信息:
  • REPOSITORY:镜像来源
  • TAG:镜像标签,用于标记来自同一个仓库的不同镜像
  • IMAGE ID:镜像ID,镜像的唯一标识
  • CREATED:创建时间
  • SIZE:镜像大小
注1:镜像ID是很重要的信息,因为它是镜像的唯一标识,我们在操作镜像时需要用到它 。一般情况下我们只会输入镜像ID的前N位就可以区分一个镜像了 。
注2:镜像的大小只是代表了镜像的逻辑体积大小 。由于相同镜像层在本地只会存储一份,因测镜像在物理上占用的空间小于各个镜像的逻辑体积之和 。
images 和 ls 命令常用的参数选项如下:
直接拿来用!一文学会 Docker 镜像

文章插图
我们有时候需要获取镜像详细的信息,这时我们可以使用 inspect 命令,语法格式为:
 docker inspect [OPTIONS] NAME|ID [NAME|ID...]
例如我们要查看刚才我们拉取的Ubuntu16.04镜像的详细信息,可以这么操作:
 docker inspect 13c9
运行上面的命令后,我们会看到镜像的详细信息以json的形式打印出来,如图:
直接拿来用!一文学会 Docker 镜像

文章插图
我们不仅可以查看镜像的详细信息,同样我们也可以查看层的详细信息,这时就需要用到history 命令,语法如下:
 


推荐阅读