您的位置首页  散文小品

images什么意思(docker images什么意思)太疯狂了

Docker Images理解镜像是一个只读的模版,而这个模版是多个只读层组成的。它们重叠在一起,除最下层外,每一层都有一个指针指向下一层。

images什么意思(docker images什么意思)太疯狂了

 

Docker Images理解镜像(Image)是一个只读的模版,而这个模版是多个只读层组成的它们重叠在一起,除最下层外,每一层都有一个指针指向下一层从docker的角度看这些层可以在内部实现,可以在宿主机的文件系统上访问到。

在用户的角度看,只存在一个文件系统这一切都是统一文件系统(union filesystem)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角获取镜像获取镜像在docker中使用image时要先从镜像仓库下载镜像,然后才能使用。

镜像仓库可以是官方提供的公共镜像库Docker Hub,也可以是自行搭建的私有仓库 不管是公共镜像库还是私有仓库,获取镜像的命令是相同的都是使用docker pull来获取镜像格式为docker pull [选项] [registry地址[:端口/]仓库名[:标签]]

举个例子,下载一个nginx镜像[root@ice ~]# docker pull nginx Using default tag: latest Trying to pull repository docker.io/library/nginx ... latest: Pulling from docker.io/library/nginx be8881be8156: Pull complete 32d9726baeef: Pull complete 87e5e6f71297: Pull complete Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 Status: Downloaded newer image for docker.io/nginx:latest

从上面的命令可以看出我们成功的下载了nginx镜像 但下载打印的信息都是什么呢?这就需要分析一下分析镜像打印信息Using default tag: latest 这条信息翻译成中文的意思是docker将使用默认的标签latest。

通俗一点就是如果下载时你不指定tag,那docker将使用一个叫latest的标签latest翻译成中文是最新的意思但这并不意味着我们下载的镜像是最新的这是因为tag是仓库拥有者手工决定的举个例子: 我们使用nginx:1.15和nginx:1.14两个镜像做一下对比。

更改nginx:1.14镜像的tag为latest [root@ice docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB docker.io/nginx 1.14 8ae4d16b741a 4 weeks ago 109 MB [root@ice docker]# docker tag docker.io/nginx:1.14 docker.io/nginx:latest [root@ice docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB docker.io/nginx 1.14 8ae4d16b741a 4 weeks ago 109 MB docker.io/nginx latest 8ae4d16b741a 4 weeks ago 109 MB

接下来我们修改nginx:1.15的tag为default[root@ice docker]# docker tag docker.io/nginx:1.15 docker.io/nginx:default [root@ice docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB docker.io/nginx default c82521676580 3 weeks ago 109 MB docker.io/nginx 1.14 8ae4d16b741a 4 weeks ago 109 MB docker.io/nginx latest 8ae4d16b741a 4 weeks ago 109 MB

此时在我本地default标签反而是最新的 所以不要认为带有latest标签的镜像就一定是最新的镜像,因为tag是仓库拥有者手工决定的 建议下载时加上tag,防止出现同种镜像不同的版本Trying to pull repository docker.io/library/nginx .. 。

从这条信息可以看出docker默认从docker.io下载镜像,library为默认仓库,如果我们在docker hub上有私有仓库,可以把library替换成自己的仓库,这样就可以从你的私有仓库下载 be8881be8156: Pull complete 32d9726baeef: Pull complete 87e5e6f71297: Pull complete Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424

这几条信息是镜像的层数,可以看出我们下载的镜像是三层存储构成的下载的时候是一层一层下载,并非单一文件下载过程中给出每层ID的前12位并且下载结束后,给出该镜像完整的sha256的摘要,以确保下载一致性Status: Downloaded newer image for docker.io/nginx:latest

给出了状态信息,从docker.io下载了新的镜像从公共仓库下载指定从公共仓库下载指定tag的镜像的镜像比如我们要下载nginx的镜像打开Docker hub,找到nginx,选择DETAILS,选择TAGS

找到要tag的版本即可下载,比如要下载tag为1.15镜像,使用docker pull nginx:1.15列出镜像列出镜像使用docker image ls或docker images查看镜像[root@ice docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx latest c82521676580 3 weeks ago 109 MB

REPOSITORY :来自于哪个仓库的镜像TAG:镜像标签IMAGE ID:镜像IDCREATED:创建时间SIZE:镜像大小镜像的大小镜像的大小仔细观察一下会发现docker Hub上nginx:latest镜像大小和本地的nginx:latest镜像大小不同。

Docker HUb上显示的是45 MB,本地显示的是109 M这是因为Docker Hub中显示的SIZE是压缩后的SIZE,在镜像下载和上传过程中镜像保持压缩状态的,因此Docker Hub所显示的SIZE是网络传输中更关心的流量大小。

而docker images 显示的是镜像下载到本地后,展开的大小,准确说是展开后的各层所占的空间的总和,因为镜像下载到本地后,查看空间的时候,更关心的是本地磁盘空间占用的大小docker images列表中的镜像体积总和并非是所有镜像实际硬盘消耗,由于Docker镜像是多层存储结构,并且可以继承、复用,因此不同镜像可能会因为使用相同的基础镜像,从而拥有共同的层。

由于Docker使用Union FS,相同的层只需要保存一份即可,因此实际镜像占用空间很可能要比这个列表镜像大小的总和要小的多可以通过docker system df命令来便捷的查看镜像、容器、数据卷所占用的空间

[root@ice online]# docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 1 0 109 MB 109 MB (100%) Containers 0 0 0 B 0 B Local Volumes 0 0 0 B 0 B

删除镜像我们可以用ID,镜像名、摘要来删除镜像使用docker image rm命令删除,其格式为docker image rm [选项] [.....]或者docker rmi 镜像名 。

如果要强制删除镜像加上-f参数docker rmi -f 镜像名 使用镜像名删除镜像使用镜像名删除镜像比如我们要删除刚下载的nginx镜像[root@ice online]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB docker.io/nginx latest c82521676580 3 weeks ago 109 MB [root@ice online]# docker rmi docker.io/nginx Untagged: docker.io/nginx:latest [root@ice online]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB

如果不加tag,docker会默认删除tag为latest标签的镜像如果想删除tag为1.15的镜像只需添加:1.15,命令为docker rmi docker.io/nginx:1.15 使用使用ID删除镜像删除镜像 比如我们要删除相同IMAGE ID镜像,可以直接使用IMAGE ID进行参数,但我们不必使用完整IMAGE ID,只需使用docker images列出的IMAGE ID即可,一般情况下取前3个字符以上,只要能区分于别的镜像就可以了

[root@ice online]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/nginx 1.15 c82521676580 3 weeks ago 109 MB docker.io/nginx latest c82521676580 3 weeks ago 109 MB [root@ice online]# docker rmi c82521676580 Error response from daemon: conflict: unable to delete c82521676580 (must be forced) - image is referenced in multiple repositories [root@ice online]# docker rmi -f c82521676580 Untagged: docker.io/nginx:1.15 Untagged: docker.io/nginx:latest Untagged: docker.io/nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424 Deleted: sha256:c82521676580c4850bb8f0d72e47390a50d60c8ffe44d623ce57be521bca9869 Deleted: sha256:2c1f65d17acf8759019a5eb86cc20fb8f8a7e84d2b541b795c1579c4f202a458 Deleted: sha256:8f222b457ca67d7e68c3a8101d6509ab89d1aad6d399bf5b3c93494bbf876407 Deleted: sha256:cdb3f9544e4c61d45da1ea44f7d92386639a052c620d1550376f22f5b46981af [root@ice online]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE

当镜像被多个库引用的时候,要使用强制删除。当然你要确保这个镜像是不需要使用的

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186