一、镜像操作案例
1.查找镜像
2.下载镜像
3.查看镜像及列表存储位置
1)遍历查看镜像
root@Nanyiroot:~/test# docker images busybox
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox 1.36.0 af2c3e96bcf1 22 months ago 4.86MB
busybox 1.35.0 95f45f955052 3 years ago 4.27MB
busybox 1.34.0 8336f9f1d094 3 years ago 1.24MB
2)查看镜像仓库在本地的存储信息(ubuntu)
-
进入 /var/lib/docker/image 目录(默认)
-
查看overlay2下文件
-
查看本地镜像
3)镜像过滤
-
根据仓库名列出镜像
-
列出特定的某个镜像,也就是说指定仓库名和标签
-
docker image ls 还支持强大的过滤器参数 --filter,或者简写 -f。之前已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用法。查看某个位置之前的镜像 before,查看某个位置之后的镜像 since
4.查看镜像详细
5.查看镜像分分层
Docker history 可以查看分层:
docker image inspect 可以查看详细的分层:
一些镜像下载的时候也可以看到是一层一层下载的:
6.打标签
7.推送镜像
8.运行容器
9.镜像删除
镜像的删除:可以根据 id 和名字删除,对于使用的镜像需要先清理容器再删除镜像。
实战一、离线迁移镜像
1.从我们之前上传到dockerhub上pull一个
2.服务器 1 上镜像保存为 tar 文件,如操作系统为MacOS
3.scp 或者只用使用可视化工具拷贝镜像到第二台服务器上
4.从 tar 中恢复镜像
5.执行 docker run 检查镜像是否可以正常运行
这里失败了,原因是主机架构不一样,mac是linux/arm64/v8,而linux是linux/amd64/v4 ,,,,这里我先欠着,等我到了公司用公司linux机器做
如果是linux机器一定会成功!!!!!!管你ubuntu还是centos
实战二、镜像存储的压缩与共享
1.拉取 nginx 镜像
如果本地没有,镜像是从仓库拉取,如果有会提示镜像已经存在,并且是最新的。
2.Docker images 查看本地镜像
可以看到该镜像为134MB
3.从上面看到 nginx 为 1.24.1 的大小是 134MB
但是从 docker hub 上查看可以看到镜像是 60.88MB,说明发生了压缩
因为仓库到本地需要走网络,所以文件越小越好。
4.把一个镜像打多个 tag,然后推送仓库
如果把一个镜像打多个 tag,且说层已经存在,不会重复存储:
5.添加一个新的镜像到我们的仓库的时候,如果 docker hub 发现已经有了是 mount 的,不是从本地推上去的
如果有相同的对象,就直接挂个新tag在上面,实际不占用磁盘空间,所以这几个对象其实共享一个空间,类似于C++中的引用计数