Docker-5-镜像的一些基本操作

2019-05-28  本文已影响0人  冷风_f818

前面的文章中说的都是一些针对容器的操作,下面再来看一下镜像,镜像是容器运行的基础,容器是镜像运行后的形态

镜像是一个包含程序运行必要的环境和代码的只读文件,它采用分层的文件系统,将每一层的改变以读写的形式增加到原来的只读文件上

镜像和容器的关系

前文中我们已经使用过容器了,我们在创建或者启动一个容器的时候,必须要指定一个镜像的名称或者id,这时镜像所扮演的角色就是容器的模板,不同的镜像可以构造出不同的容器.

我们上文中运行了一个nginx容器,命令如下:

docker run -itd --name nginx -p 80:80 nginx 

命令中的最后一个nginx就表示创建这个容器所需要的模板

镜像的体系结构

镜像的最底层是一个启动文件系统(bootfs)镜像,bootfs的上层镜像叫做根镜像,一般来说,根镜像是一个操作系统,例如Ubuntu,CentOS等,用户的镜像必须构建于根镜像之上,在根镜像之上,用户可以构建出各种各样的其他镜像

镜像的本质其实就是一系列文件的集合,一层套一层的结构有点类似于Git.

镜像的写时复制机制

当docker第一次启动一个容器的时候,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层之上,比如,如果你想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,由此,该文件的只读版本依然存在于只读层,只是被读写层的该文件副本隐藏,该机制本被称之为写时复制.

查看本地镜像

通过以下命令可以查询到所有的本地镜像:

docker images
image

返回值详解

可以看到这里一共是有5个信息,下面来详细的看一下每个列代表的是什么意思

REPOSITORY

仓库名称,仓库一般用来存放同一类型的镜像,仓库的名称由其创建者指定,如果没有指定则为<none>,一般来说,仓库名称有如下几种不同的形式:

TAG

TAG是镜像的标签,用来区分同一仓库中的不同镜像,默认是latest

IMAGE_ID

镜像的ID,唯一标识符

CREATED

表示镜像创建的时间

SIZE

表示镜像的大小

通配符过滤

使用docker images可以列出所有的镜像,但是当我们本地镜像太多的时候,还可以通过通配符匹配,如下:

image

如果想要查看镜像的详细信息,也可以通过以下命令去查看:

docker inspect 镜像ID/名称
image

下载镜像

我们去执行docker run命令的时候,如果本地没有镜像,就会自动去Docker Hub去下载,之前已经演示过了,我们也可以通过命令去Docker Hub上去搜索符合要求的镜像,命令如下:

docker search 镜像名称 
image

返回列详解

在使用docker run运行容器的时候再去下载镜像,速度可能会有点慢,所以我们可以在镜像运行之前先把镜像给下载下来,命令如下:

docker pull 指定的镜像

这里就跟从github上往下拉代码是差不多的

删除镜像

删除镜像的命令是docker rmi 镜像id/镜像名称,之前我们有用过,这里就不多说了

上一篇下一篇

猜你喜欢

热点阅读