镜像
镜像结构
镜像结构: registry_name/repository_name/image_name:tag_name
例如:docker.io/library/alpine:3.12.0
搜索
docker search alpine #搜索alpine 镜像
下载镜像
直接下载
docker pull alpine #下载alpine镜像 默认下载latest Tag标签的镜像
下载的路径为 docker.io/library/alpine:latest <仓库名>/library/
下载指定标签
docker pull alpine:3.12.0
关于镜像latest标签的解释
默认的 使用 docker pull <image_name> 获取镜像而不指定镜像tag时 会拉去该镜像的 latest版本
如 docker pull centos7 会将docker.io/library/centos7:latest 拉去到本地。
latest 标记 是一个指针 他指向了最近发行的一个版本 也就是说,letast和最后发行的版本 镜像实际上是同一个,使用docker images 或者 docker image ls 可以查看 IMAGE ID 发现ID值是一至的
查看本地镜像
docker image ls 或者docker images ⭐ 推荐使用第一种 个人比较喜欢第二种~~|| 咳咳
给镜像 打标签
语法
docker tag
例子
如下图:
docker tag a24bb4 docker.io/<hub.docker.com中注册的用户名>/alpine:20.10.21.2
可以发现🔥 IMAGE ID 并不需要写全,只要他能区分出镜像即可,当然 这是偷懒的办法 🌚 我建议你写全~
推送镜像到镜像仓库
docker push docker.io/suyan0909/alpine:20.10.21 # 因为我们推送镜像的ID和alpine:latest 的ID一至 所以它提示我们 它做了引用 并为实际的将镜像上传。
删除镜像
指定名称和标签
docker rmi <IMAGE NAME:TAG>
docker rmi suyan0909/alpine:20.10.21.2 # untagged 提示我们 只是删除了这个tag标签 因为我们有多个引用 只有将相同镜像ID的引用全部删除之后 改镜像文件才会销毁,类似于Linux中的硬链接
强制删除镜像文件
docker rmi -f <IMAGE ID>
docker rmi -f a24bb # 镜像ID依旧可以缩写 建议写全~ docker rmi -f指令 会递归的删除改镜像文件对应的所有Tag,然后再删除镜像文件
Docker 镜像特性
Docker 镜像位于Bootfs 之上 第一层镜像是BaseImage 在往上是 由应用一层层叠加的 镜像内容 最后组成完整的镜像文件 Baseimage是image的父级。
典型的Linux文件系统由bootfs和rootfs两部分组成。
docker加载机制与传统linux 有着细微的差距,具体在于bootfs和rootfs
最顶层的容器是可写的,而镜像 是只读的,因为只读的原因 镜像文件是分层挂载的,它是增量变更的,所以 可能上GB的镜像文件 上传时只需要几十MB就可以了。
增量是Docker基于aufs 最棒的一点 当然现在使用 overlay 我现在使用overlay2 , 使用overlay2 请查看 🐋Centos7 安装Docker-ce。
对于Docker而言 一般来讲 讨论镜像文件的大小意义不大,更应该关注的是增量部分的大小
