Docker - 镜像
最佳答案 问答题库888位专家为你答疑解惑
Docker - 镜像
镜像是什么
镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件。
所有应用,直接打包docker镜像,就可以直接跑起来!
Docker镜像加载原理
UnionFS(联合文件系统)
我们下载的时候看到的一层层就是这个!
UnionsFS(联合文件系统):Union文件系统(UniosFS)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同的目录挂载到同个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像
特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。
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等等。
对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用host的kernel,自己只需要提供rootfs就可以了。因此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfts
虚拟机是分钟级别,容器是秒级!
分层理解
分层的镜像
commit镜像
docker commit 提交容器成为一个新的副本# 命令与git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]实战测试
# 1、启动一个默认的tomcat
# 2、发现这个默认的tomcat是没有webapps应用,官网的镜像默认webapps下面是没有文件的!
# 3、我们拷贝进去了基本的文件
# 4、将我们操作过的容器通过commit提交为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
448d12d702d2 tomcat "catalina.sh run" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp busy_turing
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker exec -it 448d12d702d2 /bin/bash
root@448d12d702d2:/usr/local/tomcat# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs native-jni-lib NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps webapps.dist work
root@448d12d702d2:/usr/local/tomcat# cp -r webapps.dist/* webapps/
root@448d12d702d2:/usr/local/tomcat# cd webapps
root@448d12d702d2:/usr/local/tomcat/webapps# ls
docs examples host-manager manager ROOT
root@448d12d702d2:/usr/local/tomcat/webapps#
root@448d12d702d2:/usr/local/tomcat/webapps# exit
exit# 提交新的镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker commit -m="调整webapps" -a="wys" 448d12d702d2 tomcat:1.0
sha256:07e43a4b5b9a1892b4a425aa5b25d31cd3366f7450b939dd62f3f5ca0349d4eb# 启动新的镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker run -it -d -p 8080:8080 tomcat:1.0
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1ee55bd7376 tomcat:1.0 "catalina.sh run" 44 seconds ago Up 43 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp compassionate_bouman
99%的人还看了
相似问题
- 树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写工具 (四)
- composer切换全局镜像源的方法
- 推荐一个windows上传linux服务器/linux服务器的docker镜像的工具,摆脱docker cp,以及解决常见问题。
- docker下移除不使用的镜像、容器、卷、网络
- 一起学docker系列之四docker的常用命令--系统操作docker命令及镜像命令
- qcow2、raw、vmdk等镜像格式工具
- 获取阿里云Docker镜像加速器
- 3.8-镜像的发布
- 【备忘录】Docker容器、镜像删除与资源清理命令
- 8.jib-maven-plugin构建springboot项目镜像,docker部署配置
猜你感兴趣
版权申明
本文"Docker - 镜像":http://eshow365.cn/6-36397-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 独立IP主机怎么样?对网站有什么影响
- 下一篇: 手机玻璃盖板为什么需要透光率检测