Docker-番外篇之上传镜像

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们在上一章,讲了虚拟化,虚拟化是把硬件虚拟化,然后创建出来的虚拟机完全隔离,而Docker则是软件(内核)虚拟化,他的隔离性会低于虚拟机。我们将通过3-4周来讲解Docker相关内容,由于涉及到内容较多,就不一一列出来具体的细节,主要从以下几个方面来讲解:

Docker基本情况

Docker基本命令

Dockerfile

Docker镜像

Docker仓库

Docker原理

Docker网络&存储&日志

Docker-Compose

Docker番外篇(本小节属于)

上一小节我们介绍了docker在下载镜像的时候做了什么,今天我们讲讲在docker上传的时候做了什么。

本小节的知识,如果是本地存储,在实际运维中并没有什么用。但是如果你使仓库是的是对象存储,理解这个逻辑就是很有用的,这个也是生产经验。

我们在运行docker仓库的时候,是做了持久化的数据的,我们现在去看看持久化目录里面的内容是什么?

csharp 复制代码
#容器内执行,未上传镜像的时候里面内容都是空的
/ # cd /var/lib/registry/
/var/lib/registry # ls
/var/lib/registry # 

#上传一个镜像
[root@localhost ~]# docker push 192.168.31.205:5000/centos:7
The push refers to a repository [192.168.31.205:5000/centos]
174f56854903: Pushed 
7: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529

#宿主机执行,上传完成一个镜像的目录情况,
[root@localhost opt]# tree -L 5
.
└── docker
    └── registry
        └── v2
            ├── blobs
            │   └── sha256
            └── repositories
                └── centos

7 directories, 0 files

blobs :用于实际存储镜像文件,实际hash打散的二进制文件。当然下图是存在 很多镜像才会出现的这么多目录。

repositories :镜像的元数据目录,第一层目录镜像名字或者目录。当前只有centos是因为只有一个centos镜像,如果有多个镜像,则会出现多个目录。如果是多层目录,则下面还有曾经目录。centos目录下的其他目录包括_layers信息,_manifests信息元数据,而_upload则是上传的临时目录。

csharp 复制代码
[root@localhost opt]# cd docker/registry/v2/repositories/
[root@localhost repositories]# ls
centos
[root@localhost repositories]# cd centos/
[root@localhost centos]# ls
_layers  _manifests  _uploads
[root@localhost centos]# 

上图上传镜像的过程中,数据在_upload目录,上传完成以后数据到了blobs目录。

下图是上传过程中的临时目录,最后消失的目录情况。

这个数据目录转换的过程其实就是使用对象存储容易出现问题的地方。因为在Linux分区里面,移动文件或者目录,实际上只是改变一个inode,速度快到我们感知不到,因为不会真实移动数据。但是在对象存储里面是没有这个概念的,在对象存储里面只有对象,对象只能被上传/删除/修改,没有移动的操作。由于这个问题我还没弄出来,主要是目前公有云的对象存储在这个问题上支持并不好,后期来补上这个细节问题。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
是枚小菜鸡儿吖40 分钟前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居
AI_Lab011 小时前
宝塔用了两年,有没有必要换成轻量方案?
linux·运维·服务器
众壹新能源科技1 小时前
逆变器直流开关柜温度监测与预防:红外巡检发现3个120度热点
运维·人工智能·自动化
by209991 小时前
Linux GDB 调试与 CGDB 使用
linux·运维·服务器·经验分享
小Ti客栈1 小时前
Netty 零拷贝原理与实战
运维·服务器·网络
ai_coder_ai1 小时前
AIOps 智能运维架构设计及其应用
运维
静以修身zzz2 小时前
计算云服务
运维·网络·云计算
星恒随风2 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
万联WANFLOW2 小时前
异地组网速度忽快忽慢到底怎么回事?直连与中继的判断方法和处理步骤
运维·网络·网络协议·p2p
SDWAN_Cheap2 小时前
物理服务器跟云服务器有什么区别,使用于什么场景
运维·服务器