Dooker镜像详解,文件系统分层,本地镜像的发布 (阿里云和私有库)commit (安装vim ),详细演示
目录
1.镜像
1.1分层的镜像
1.2UnionFS(联合文件系统)
1.3Docker镜像加载原理
1.4为什么 Docker 镜像要采用这种分层结构呢
2.Docker镜像commit操作案例
1.docker commit 提交容器副本使之成为一个新的镜像
2.案例演示ubuntu安装vim
3.安装完后,commit我们自己的新镜像 (上面有命令)
4.启动我们的新镜像并和原来的对比
3.本地镜像发布到阿里云
3.1将本地镜像推 送到阿里云
3.2将阿里云上的镜像下载到本地
4.本地镜像发布到私有库
4.1是什么
4.2将本地镜像推送到私有库
4.3演示步骤
1.镜像
是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
1.1分层的镜像
以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载
1.2UnionFS(联合文件系统)
UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录
1.3Docker镜像加载原理
Docker镜像加载原理:
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含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等等。
平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??
对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs。
1.4为什么 Docker 镜像要采用这种分层结构呢
镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。
比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;
同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。
Docker镜像层都是只读的,容器层是可写的
当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
2.Docker镜像commit操作案例
1.docker commit 提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
2.案例演示ubuntu安装vim
下载ubuntu镜像到本地并成功运行, 原始的默认Ubuntu镜像是不带着vim命令的
docker容器内执行上述两条命令:
3.安装完后,commit我们自己的新镜像 (上面有命令)![](/assets/blank.gif)
4.启动我们的新镜像并和原来的对比
1 官网是默认下载的Ubuntu没有vim命令
2我们自己commit构建的镜像,新增加了vim功能,可以成功使用。
3.本地镜像发布到阿里云
3.1本地镜像发布到阿里云流程
3.2将本地镜像推 送到阿里云
阿里云开发者平台 开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云
控制台--->左侧横杠--->找到容器服务下面的 容器镜像服务 --->创建命名空间(类似包名)
--->创建仓库--->选择本地仓库
仓库生成的命令,直接使用
3.3将阿里云上的镜像下载到本地
4.本地镜像发布到私有库(和上面相似)
4.1是什么
1 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。
2 Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。
Docker Registry是官方提供的工具,可以用于构建私有镜像仓库
4.2将本地镜像推送到私有库
4.3演示步骤![](/assets/blank.gif)
默认情况,仓库被创建在容器的 /var/lib/registry目录下,建议自行用 容器卷映射,方便于宿主机联调
Dooker镜像详解,文件系统分层,本地镜像的发布 (阿里云和私有库)commit (安装vim ),详细演示相关推荐
- Docker镜像发布到阿里云和私有库
目录 一.Docker镜像 (一)概述 (二)Docker镜像加载原理 (三)镜像分层结构优势 (四)重点理解 (五)docker commit操作实例 (六)总结 二.本地镜像发布到阿里云 三.本地 ...
- Docker镜像推送阿里云和私有库
原文地址:http://www.linzichen.cn/article/1592190934097854464 当公司有新同事入职时,我们常常会让其从git或svn上拉代码下来,并在本地跑通.若公司 ...
- 华三交换机配置多个镜像口_配置本地端口镜像详解(多个镜像口:多个观察口)...
一.组网需求"" 公司研发一部.研发二部和市场部通过Switch与外部Internet通信,监控设备Server1.Server2与Switch直连. 现在希望将研发一部.研发二部 ...
- 图形化管理工具Portaniner安 以及 Docker镜像详解(三)
文章目录 图形化管理工具Portaniner安装 Docker镜像详解 1 什么是镜像 2 Docker镜像加载原理 3 分层理解 提交镜像 常用容器部署 Nginx部署 图形化管理工具Portani ...
- java访问本地文件_详解Java读取本地文件并显示在JSP文件中
详解Java读取本地文件并显示在JSP文件中 当我们初学IMG标签时,我们知道通过设置img标签的src属性,能够在页面中显示想要展示的图片.其中src的值,可以是磁盘目录上的绝对,也可以是项目下的相 ...
- Windows Server 2008终端服务详解系列5:用ISA 发布SH-TSG
Windows Server 2008终端服务详解系列5:用ISA 发布SH-TSG 前言: 本系列将全面的介绍Windows Server 2008终端服务,从概念到功能,从安装到配置都会以通俗易懂 ...
- 字符界面运行mysql_详解linux系列之字符界面下MySQL+apache+php的源代码安装
详解linux系列之字符界面下MySQL+apache+php的源代码安装 在前面介绍了linux和在字符下安装,下面我来介绍一下程序包的安装. 大家也许都知道在linux安装程序的时候后用rpm包安 ...
- Docker专题(六)-Docker镜像详解
1.Docker镜像(images)概念 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件 ...
- 云原生 · 镜像详解
镜像简介 Docker 镜像(Image)是用于创建 Docker 容器的模板.Docker 镜像相当于一个 root 文件系统,比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubunt ...
最新文章
- CentOS7下Docker Storage Pool扩容
- python安装numpy-如何为python安装numpy和scipy?
- 【LeetCode从零单排】No21.MergeTwoSortedLists
- SpringCloud之RestTemplate,几种常见的请求方式
- 如何使用CSS实现居中
- 如何使用HTML5嵌入视频
- Docker安装Mysql(docker-compose.yml)
- jzoj4313 电话线铺设(最小生成树+最近公共祖先)
- 一个 Accept-Encoding 引发的 requests 爬虫乱码问题
- IEEE754标准浮点格式
- paip..net 程序多语言切换开发的流程总结
- 【深度剖析】小米CyberDog四足机器人的AI运动系统的实现
- 电影社交网络中Facemash女生评比算法Java实现
- devenv.exe应用程序错误——可能原因之一
- 真牛皮!wsl安装位置
- 一名2012计算机应届毕业生的求职之路
- itest英语考试bug_【写给德语同行的】iTest非官方食用指南(上)
- EVM源码解读(1):amplify_spatial_lpyr_temporal_iir函数
- mac下更新自带的PHP版本到5.6或7.0
- nginx的全局配置和HTTP相关配置