Docker学习三《使用镜像》

一、前言

这篇主要分享一下 镜像是如何使用的,以及一些基础的命令操作。docker 命令 --help # 帮助命令

二、获取镜像

1、 docker pull 命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

具体的选项可通过 docker pull --help

2、使用 docker pull 命令

1、命令:
	docker pull ubuntu
	docker pull ubuntu:18.04 指定版本下载
2、结果:
	18.04: Pulling from library/ubuntu
	f22ccc0b8772: Pull complete 
	3cf8fb62ba5f: Pull complete 
	e80c964ece6a: Pull complete 
	Digest: sha256:fd25e706f3dea2a5ff705dbc3353cf37f08307798f3e360a13e9385840f73fb3
	Status: Downloaded newer image for ubuntu:18.04
	docker.io/library/ubuntu:18.04

三、列出镜像

1、使用 docker image ls 命令

1、命令:
	docker images(docker image ls)
2、结果:
	ubuntu                  18.04     2c047404e52d   3 months ago    63.3MB
	centos                  6.7       9f1de3c6ad53   24 months ago   191MB
	ubuntu                  15.10     9b9cb95443b5   4 years ago     137MB
3、总结:
	列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间

四、搜索镜像

1、使用 docker search 命令

1、命令:
	docker search mysql
2、结果:
	NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
	mysql                             MySQL is a widely used, open-source relation…   10575     [OK]       
	mariadb                           MariaDB Server is a high performing open sou…   3954      [OK]       
	mysql/mysql-server                Optimized MySQL Server Docker images. Create…   774                  [OK]
	percona                           Percona Server is a fork of the MySQL relati…   527       [OK]   

五、删除本地镜像

1、 docker image rm 命令格式为:

docker image rm [选项] <镜像1> [<镜像2> ...]

其中,<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要

2、docker image rm 长镜像ID

docker image rm 2c047404e52d

在这里插入图片描述
这样就把 Ubuntu:18.04给删除掉了。

3、docker image rm 短镜像ID

docker image rm 678

在这里插入图片描述
使用镜像 ID 的前三位,就可以把 registry:latest 给删掉了。

4、docker image rm 镜像名

docker image rm nginx 

在这里插入图片描述

5、docker image rm 镜像名:版本号

docker image rm ubuntu:15.10

在这里插入图片描述

6、docker image rm 镜像摘要

docker image rm mysql@sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c

在这里插入图片描述

7、docker rmi 镜像ID

docker rmi a70d36bc331a

在这里插入图片描述
我们同样可以把 docker image rm 镜像ID 命令缩写为 docker rmi 镜像ID

8、Untagged 和 Deleted

1、如果观察上面这几个命令的运行输出信息的话,你会注意到删除行为分为两类,一类是 Untagged,另一类是 Deleted。我们之前介绍过,镜像的唯一标识是其 ID 和摘要,而一个镜像可以有多个标签。
2、因此当我们使用上面命令删除镜像的时候,实际上是在要求删除某个标签的镜像。所以首先需要做的是将满足我们要求的所有镜像标签都取消,这就是我们看到的 Untagged 的信息。因为一个镜像可以对应多个标签,因此当我们删除了所指定的标签后,可能还有别的标签指向了这个镜像,如果是这种情况,那么 Delete 行为就不会发生。所以并非所有的 docker image rm 都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已。
3、当该镜像所有的标签都被取消了,该镜像很可能会失去了存在的意义,因此会触发删除行为。镜像是多层存储结构,因此在删除的时候也是从上层向基础层方向依次进行判断删除。镜像的多层结构让镜像复用变得非常容易,因此很有可能某个其它镜像正依赖于当前镜像的某一层。这种情况,依旧不会触发删除该层的行为。直到没有任何层依赖当前层时,才会真实的删除当前层。这就是为什么,有时候会奇怪,为什么明明没有别的标签指向这个镜像,但是它还是存在的原因,也是为什么有时候会发现所删除的层数和自己 docker pull 看到的层数不一样的原因。
4、除了镜像依赖以外,还需要注意的是容器对镜像的依赖。如果有用这个镜像启动的容器存在(即使容器没有运行),那么同样不可以删除这个镜像。之前讲过,容器是以镜像为基础,再加一层容器存储层,组成这样的多层存储结构去运行的。因此该镜像如果被这个容器所依赖的,那么删除必然会导致故障。如果这些容器是不需要的,应该先将它们删除,然后再来删除镜像

六、docker image ls 命令来配合

1、删除所有仓库名为 mysql 的镜像

docker image rm $(docker image ls -q mysql)

在这里插入图片描述

2、删除所有在 nginx:latest 之前的镜像

docker image rm $(docker image ls -q -f before=nginx:latest)

在这里插入图片描述
充分利用你的想象力和 Linux 命令行的强大,你可以完成很多非常赞的功能.

七、总结

主要是对镜像的一些操作命令使用方法进行了总结,有疑问欢迎指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值