7. docker——镜像

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

7. docker——镜像_第1张图片

以交互方式运行

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

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

如图:

7. docker——镜像_第2张图片
访问:

7. docker——镜像_第3张图片

1.3.1 解决404问题

1)先关闭防火墙

service firewalld stop

2)进入Tomcat容器

docker exec -it 0820a84543da /bin/bash

3)查看目录

ls -l

7. docker——镜像_第4张图片

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

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

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

7. docker——镜像_第5张图片

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

2.1 进入Tomcat容器

docker exec -it  bd98b373d138 /bin/bash

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

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

7. docker——镜像_第6张图片

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

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

执行结果如图:

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

7. docker——镜像_第7张图片

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

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

7. docker——镜像_第8张图片

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

7. docker——镜像_第9张图片

你可能感兴趣的:(#,docker,docker)