docket镜像

1.是什么

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

1.1.什么是UnionFS

Unionfs是一个堆栈式的联合文件系统, 2004年由纽约州立大学石溪分校开 发, 它可以把多个目录(也叫分支)内容合并在一起, 而目录的物理位置是分开的.

Unionfs允许只读和可读写目录并存, 就是说可同时删除和增加内容. Unionfs应用的地方很多, 比如在多个磁盘分区上合并不同文件系统的主目录, 或把几张CD光盘合并成一个统一的光盘目录(归档).

另外, 具有写时复制(copy-on-write)功能Unionfs可以把只读和可读写文件系统合并在一起, 虚拟上允许只读文件系统的修改可以保存到可写文件系统当中.

SLAX是一个 192MB大小的Linux发行版, 目标是为便携设备(如usb闪存或mini-cd)开发一个完整功能的Linux操作系统, 人们可以通过引导光盘(或其它编写媒介)直接使用SLAX Linux.

甚至能在没有硬盘的计算机上运行. Unionfs是SLAX系统的一个重要组成部分, 它使SLAX可做为一个真正的Linux系统(具有可写入的根目录树)来运行. 首先我们来了解unionfs.

参考来源:https://www.phpfans.net/article/htmls/200705/MjM3NjA2.html

总结:其实就像java里面的继承体系,文件是层层依赖的,最外层拥有最内层所有的东西,内层是可以公用的。

1.2.镜像文件结构

1.docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS;

2.在Docker镜像的最底层是bootfs,然后是rootfs,刚启动的时候,首先加载bootfs文件;

3.当bootfs加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs;

 什么是bootfs:

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel,不同的Linux 系统 bootfs几乎一样

什么是rootfs:

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

为什么docker容器文件很小:

1.因为bootsf几乎一样,可以使用主机的bootfs,而自己只需要提供rootfs;

2.对于一个精简的os,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了;

3.自定义容器打包镜像

案例中以打包一个自己的tomcat为例

1.下载tomcat容器

下载8.0.52版本的tomcat

docker pull tomcat:8.0.52

2.启动tomcat容器

回顾之前讲的启动容器:

docker run -it centos /bin/bash

 参数介绍:

--name:"容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: (大写的P)随机端口映射;
-p: (小写的p)指定端口映射,有以下四种格式
  ip:hostPort:containerPort
  ip::containerPort
  hostPort:containerPort
  containerPort

假设启动一个tomcat,以后台形式启动,主机中的端口为:8081,容器中的端口为:8080 命令如下:

docker run -d -p 8081:8080 tomcat:8.0.52

3.访问tomcat

4.修改tomcat

1.进入到tomcat容器中;

2.删除ROOT文件中的所有内容

3.写一个自己的index.html

4.再次访问,看自己写的页面是否生效

5.打包为自己的tomcat镜像

docker commit -m='my tomcat image' -a='zhishidi' 08abc713c71e zsd/tomcat:1.0 

参数说明:

-m='镜像描述'

-a='镜像作者'

08abc713c71e :容器id

zsd/tomcat:打包后的镜像名称

1.0 :打包后的版本号

6.启动自己的tomcat镜像

7.访问自己的tomcat镜像

 完美!

系统化学习docker教程:

https://www.cnblogs.com/newAndHui/p/13508771.html

原文地址:https://www.cnblogs.com/newAndHui/p/13412578.html