5.Docker之镜像的使用

镜像充当容器的模板,没有镜像容器就无法运行,在Java面向对象中,存在着类与对象,对象是依靠类实例化,而镜像和容器就类似这样的关系。

1.查看镜像列表

可以通过docker images查看本地所有的镜像:

列明说明:REPOSITORY:表示镜像的仓库源;TAG:镜像的标签;IMAGE ID:镜像ID;CREATED:镜像创建时间;SIZE:镜像大小

同一个仓库源可以有多个TAG,代表这个仓库源的不同版本,如上图所示,这里有两个镜像,都是tomcat,但TAG分别是7和latest,分别代表tomcat7的tomcat的最新版本。

同时,使用REPOSITORY:TAG来定义不同的镜像,比如我要启动tomcat7,那么指定tomcat:7来启动,否则指定tomcat:lastest来启动:

如果,指定启动的镜像版本不存在,那么会从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载:

2.通过镜像启动多个容器

镜像与容器就像类与实例一样,每次通过镜像启动容器都是一个全新的容器:

3.查找镜像

我们可以通过docker search命令来搜索镜像,这里假设我们需要tomcat:

搜索出来的镜像,我们可以通过docker pull 镜像名称来下载到本地,并且下载下来的版本是最新的 !

如果不希望pull下来是最新的版本,可以去Docker Hub 网址为: https://hub.docker.com/搜索镜像,很容易可以找到tomcat的版本信息,最后通过docker pull tomcat:版本号下载到本地(前面文章已有介绍)。

列名说明:NAME:镜像仓库源的名称;DESCRIPTION:镜像的描述;OFFICIAL:是否docker官方发布

4.下载/拉取镜像

我们可以使用docker pull将镜像拉取或下载到本地,镜像如果没有下载到本地,通过镜像去启动容器时,由于本地并没有该镜像,也会自动先去下载镜像然后再启动容器:

5.创建镜像***

有两种方式可以创建镜像,一种是使用dockerfile创建一个全新的镜像,另一种则是在原有的镜像基础上进行提交从而创建镜像。

dockerfile创建镜像后面有章节详细说明,以下是在原有镜像上进行提交。

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以从已经创建的容器中集成工具并提交为一个新的镜像:

需求:在tomcat:7这个镜像基础上集成lua

①.查看我们所拥有的镜像

②.基于TAG为7的tomcat镜像启动容器

③.进入only-tomcat容器交互模式

在这里,我们进入lua交互模式,确定了尚未集成lua,现在我们就是要在该容器的基础上,集成lua,然后提交为一个新镜像

④.在only-tomcat容器内安装lua(注意:必须在容器交互模式下进行,因为是要集成到容器中)

apt-get update -y && apt-get install -y luajit luarocks

⑤.使用exit命令退出容器交互模式,并commit为一个新镜像

⑥.使用新镜像lua启动一个容器并操作lua

6.更新镜像

更新镜像跟创建镜像有点相似(非dockerfile创建的镜像):

①.首先根据镜像启动一个容器(仍然是根据tomcat:7这个镜像启动容器)

②.进入容器交互模式,在运行的容器内使用 apt-get update 命令进行更新,在完成操作之后,输入 exit命令来退出这个容器:

③.此时ID为595aae3418a3的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本:

命令说明:-m:提交的描述信息;-a:指定镜像作者;595aae3418a3:容器ID;newimage:v1.1.1:指定要创建的目标镜像名以及TAG版本号

7.设置镜像标签

我们可以使用docker tag命令,为镜像添加一个标签(TAG版本),添加后会生成一个相同的镜像,就连镜像id都一样,只是版本不同:

8.删除镜像

使用docker rmi可以删除镜像,需要注意的是:如果要删除的镜像关联着容器(不管容器是否启动),都无法删除镜像:

首先,查看本地镜像:

其次,根据lua镜像启动一个容器:

接着,我们删除lua镜像,看结果:

接着,我们关闭容器,再尝试删除镜像,依然是删除不掉:

最后,我们先删除与之关联的容器,再尝试删除镜像,最终删除了:

猜你喜欢

转载自www.cnblogs.com/Json1208/p/8922394.html