当前位置:   article > 正文

Docker与微服务_docker和微服务

docker和微服务

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

一、镜像

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件

1.镜像分层

以tomcat镜像为例,我们发现在pull的过程中镜像好像一层一层的在下载

file

(1). Docker镜像加载原理:

docker镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是联合文件系统(UnionFS)

(2). UnionFS(联合文件系统)

UnionFS(联合文件系统):Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加, 同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统时Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)可以制作除具体的应用镜像。

(3). 具体细节
  • bootfs(boot file sysytem)

主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层时引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs

  • rootfs(root file system)

在bootfs之上,包含的就是典型Linux系统中的/dev, /proc, /bin,/etc等标准目录和文件,rootfs就是各种不同操作系统发行版,比如Ubuntu,Centos等

(4). 镜像分层的好处

共享资源,方便复制迁移、复用

比如说多个镜像都是从相同的一份base镜像构建而来(更详细的讲 假如base镜像共有十层,而A镜像是base镜像的前三层,B镜像是base镜像的后三层),那么我们只需要在磁盘上保存一份base镜像,在内存中加载一份base镜像,就可以为所有由base镜像构建而来的镜像的实例容器服务了。

通俗来讲,大学图书馆分为好几层,如工学、文学、医学每个大的分区又可以细分多个不同的子领域,而我们全校的学生虽然专业众多,但是都可以在图书馆找到属于自己专业的书籍。这样我们就不需要因为学科领域不同也建造多个图书馆了

(5). 容器层、镜像层

当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称为 " 容器层" , "容器层 " 之下的都叫 " 镜像层 " 。Docker镜像层都是只读的,容器层是可写的。

这个好理解,图书馆中的书可以借阅,但是图书馆地基和整体建筑肯定不能随便动

在docker上运行Ubuntu容器实例,使用vim编辑文件,发现报错了,找不到vim

file

原因

这是由于镜像是简易版的Linux,仅包括Linux内核等一些重要的。

但是我们进行配置文件的修改,需要用到vim编辑器,这时候就需要镜像加强了

apt update 更新包管理工具(ubuntu)

file

apt install vim 下载vim

使用vim编辑器,新建文件a.txt 并写入hello docker,保存退出。读取a.txt文件

file

ctrl+q+p 退出容器 docker ps 查看正在运行的容器

file

第一个就是我们刚才使用的带vim编辑器的ubuntu容器

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

file

commit 带vim编辑器的ubuntu容器到本地,查看本地镜像发现带vim的大小多了近100MB,这就是为什么镜像文件小的原因所在,只是按需下载

Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。

2.本地镜像发布到阿里云

在阿里云控制台 -> 容器镜像服务 -> 个人实例(创建一个用于测试)

file

file

file

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/858405?site
推荐阅读
相关标签
  

闽ICP备14008679号