当前位置:主页 > 查看内容

7. docker——镜像

发布时间:2021-09-10 00:00| 位朋友查看

简介:1. 概述 ? ? ? ? 镜像是一种轻量级、可自行的独立软件包用来打包软件运行环境和基于运行环境快发的软件它包含运行某个软件所需的所有内容包括代码、运行时、库、环境变量和配置文件。 1.1?UnionFS联合文件系统 ? ? ? ? 是一种分层、轻量级并且高性能的文件系……

1. 概述

? ? ? ? 镜像是一种轻量级、可自行的独立软件包,用来打包软件运行环境和基于运行环境快发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

1.1?UnionFS(联合文件系统)

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

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

1.2?Docker镜像加载原理

? ? ? ? docker镜像实际上由一层层的文件系统组成,这种层级的文件系统UnionFS。

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

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

1.3?docker镜像commit操作

docker commit提交容器副本使之成为一个新的镜像

语法:

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

案例演示:

1)从Hub上下载Tomcat镜像到本地并成功运行

docker pull tomcat

以交互方式运行

### 以交互式的方式启动Tomcat,本机端口8888映射Tomcat端口8080
docker run -it -p 8888:8080 tomcat

注意;这里的参数是小写的p,表示指定端口,如果改成大P,就表示随机端口

如图:


访问:

1.3.1 解决404问题

1)先关闭防火墙

service firewalld stop

2)进入Tomcat容器

docker exec -it 0820a84543da /bin/bash

3)查看目录

ls -l

4)查看webapps目录,发现其是空的,在查看webapps.dist发现其有内容

因此,将webapps目录删除,将webapps.dist改成webapps

再次访问,成功的访问到了Tomcat

2)故意删除上一步的镜像生产Tomcat容器的文档

2.1 进入Tomcat容器

docker exec -it  bd98b373d138 /bin/bash

2)进入webapps目录,删除doc文件夹

3)再次访问Tomcat的doc,报错,如图:

3)以删除了docs目录的Tomcat为模板,commit一个没有doc的Tomcat新镜像tomcat02

docker commit -a="zoudm" -m="del tomcat docs" bd98b373d138 bjc/tomcat02:1.2

执行结果如图:

最后查询镜像,发现镜像列表存在刚才提交的镜像,如图:

4)启动新镜像并和原来的对比

docker run -it -p 9999:8080 bjc/tomcat02:1.2 

访问新容器的Tomcat,可以访问,但是,访问其docs报错,如图:

;原文链接:https://blog.csdn.net/weixin_43318134/article/details/115680709
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐