❤️ 专栏简介 :本专栏我们会从最基础的内容开始学习Docker的相关内容,循序渐进的掌握Docker知识并进行实战。
☀️ 专栏适用人群 :适用于具备基础 Linux 知识的 Docker 初学者,当然希望各位有经验的docker开发者不吝赐教。
🌙专栏特点:通俗易懂、图文并茂、非常详细;
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
🍄 专栏地址:https://blog.csdn.net/anchenliang_1002/category_11878561.html
本节主要介绍了docker镜像的增删改查相关操作,包括获取镜像
、查看镜像
、删除镜像
以及镜像的综合管理
等。
文章目录
一、获取镜像(docker pull)
当然获取镜像的方法有很多种:
1、从dockerhub获取镜像
2、本地镜像导出、导入
3、私有的docker仓库
本节我们主要讲第一种方式:从dockerhub获取镜像。
通过前面的知识我们也大概知道了,获取镜像我们一般从镜像仓库获取;默认的docker仓库是dockerhub,dockerhub上有大量的优质镜像,当然也有很多用户上传的镜像;当我们学习完docker之后,也可以上传自己的镜像到dockerhub中,比如,我们可以下载一个centos镜像,然后用该镜像运行出一个容器,并在容器中按照了vim nginx等软件;最后提交镜像,上传到dockerhub上,其他小伙伴就可以下载使用咱们上传的镜像了。
1.1 获取镜像
获取镜像的命令:
#查找镜像,tag为具体的标签版本
docker search 镜像名:tag
#下载镜像
# 方式1 不带tag
docker pull centos #如果centos后面不加tag,那就默认是centos:latest,即默认下载latest标签版本
# 方式2 带tag
docker pull centos:7.8.2003 # 下载7.8.2003标签版本的centos
例如获取centos镜像的过程如下:
docker search centos
然后下载centos镜像:
docker pull centos
可以看到,不加tag时,上面会提示下载的是默认tag,即latest。
1.2 查看本地的镜像
下载完成后,查看本地的docker镜像命令
docker images
或
docker image ls
#以上两条指令时等价的
就可以看到我们刚刚下载的centos:releast镜像了。
1.3 镜像文件存储位置
那这些镜像都放在哪些位置呢?
docker info | grep Root
可以看到Root存放在 /var/lib/docker
下;
咱们刚刚pull下来的docker镜像是放在/var/lib/docker/image/overlay2/imagedb/content/sha256
下的,我们来查看一下:
可以看到/var/lib/docker/image/overlay2/imagedb/content/sha256
下存放的就是镜像的文件,文件的命名是镜像id,它和我们docker images
看到的镜像id是一一对应的。这些文件的作用的记录镜像和容器的配置关系;
1.4 使用不同镜像,生成容器
启动centos(latest)容器
docker run -it --rm centos bash
指令参数解释:
-it :开启一个交互式的终端
--rm:容器退出时删除该容器
bash:进入终端后开启bash命令
可以看到我们进入了centos(latest)容器内部,且可以看到最新tag的centos是8.4.2105;
使用exit
可以退出容器:
启动centos7.8.2003容器
docker images
可以看到我们宿主机里还有centos7.8.2003镜像,让我们用它来运行出容器;
docker run -it --rm centos bash
可以看到我们进入了centos(7.8.2003)容器内部;
依旧是使用exit
可以退出容器:
二、查看镜像
2.1 查看本地的镜像
查看本地都有哪些镜像
docker images
或
docker image ls
#以上两条指令时等价的
就可以看到我们本地都有哪些docker镜像了;第一列(REPOSITORY)是docker镜像的名称,第二列(TAG)是镜像的标签;第三列是镜像ID;第四列是镜像的创建时间(或上次修改的时间);最后一列是该镜像的大小;
查看具体的镜像
docker images +具体的镜像名
以上指令可以用来查看相关的镜像;比如
当然也可以具体到查看某一个tag的镜像:
docker images +具体的镜像名:tag
只查看镜像id
# -q 是-quit的缩写
docker images -q
格式化查看镜像
使用docker的模板语言,格式化的查看镜像的某些信息。
比如我们只想看某个镜像的仓库名称和它的id:
docker images --format "{{.ID}}--{{.Repository}}"
以表格形式显示
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
2.2 查看(搜索)dockerhub里的镜像
比如搜索dockerhub里有没有centos镜像:
docker search centos
可以看到,有很多centos的镜像,其中第一个是官方版的。
那有没有搜索不到的情况(即dockerhub 里没有该镜像):
docker search adfsafdsafsda
可以看到,啥也没有。
三、删除镜像
我们可以根据镜像的 id、名字、摘要等方式去删除镜像
# 根据名字删除centos镜像
docker rmi centos
可以看到是分层删除的。
# 根据id删除centos镜像
docker rmi 镜像id
四、镜像的综合管理
4.1 批量删除镜像
#批量删除当前所有镜像(慎用)
docker rmi `docker images -aq`
4.2 导出镜像
docker image save 所要导出的镜像 > 目录/导出后的镜像名称
#例如导出centos7.8.2003镜像到/opt目录下并命名为centos7.8.2003-acl.tgz镜像
docker image save centos:7.8.2003 > /opt/centos7.8.2003-acl.tgz
运行结果:
比如默认运行的centos镜像,不提供vim功能,我们可以运行该容器后,在容器内安装vim,然后提交该镜像;再导出该镜像为压缩文件,就可以发给其他人使用了。
详细过程如下:
[root@localhost acl]# docker run -it centos:7.8.2003 bash
[root@7ce3ebdd0cd3 /]# yum install vim
。。。。。。。。。。省略安装过程
[root@7ce3ebdd0cd3 /]# exit
exit
[root@localhost acl]#
[root@localhost acl]#
[root@localhost acl]# docker image save centos:7.8.2003 > /opt/centos7.8.2003-acl.tgz
[root@localhost acl]# ls /opt/ -lh
总用量 202M
-rw-r--r-- 1 root root 202M 6月 29 22:31 centos7.8.2003-acl.tgz
drwx--x--x 4 root root 28 6月 24 19:33 containerd
drwxr-xr-x. 3 root root 24 6月 19 20:59 kingsoft
drwxr-xr-x. 2 root root 6 10月 31 2018 rh
[root@localhost acl]#
4.3 导入镜像
#导入镜像命令
docker image load -i 镜像存放路径+名称
#例如导入放在/opt目录下的centos7.8.2003-acl.tgz镜像
docker image load -i /opt/centos7.8.2003-acl.tgz
4.4 查看镜像详细信息
#查看docker服务信息
docker info
#查看镜像详细信息
docker image inspect +镜像id
例如:
docker image inspect 605c77e624dd