定义

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

Docker镜像加载原理

Docker的镜像实际由一层层的文件系统(UnionFS)组成。

UnionFS 联合文件系统:分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交来层层叠加。

image.png

Docker镜像的最底层是bootfs(boot file system),与Linux相同,包含boot加载器(bootloader)和内核(kernel)。当boot加载完成整个内核就在内存中了,内存使用权由bootfs转交给内核,同时系统卸载bootfs。

bootfs之上是rootfs(root file system),就是操作系统发行版(Ubuntu,Centos...),包含/dev,/proc,/bin,/etc等标准目录和文件。

Docker为什么小?
1.对于不同的Linux发行版,rootfs有区别,但bootfs基本是一致的,可以共用bootfs。
2.一个精简的OS的rootfs只需要最基本的命令,工具和程序库,可以很小。
3.Docker镜像底层可以直接使用宿主机的内核,自己只需要提供rootfs。

Docker镜像分层原理:layer

Docker镜像都是只读的,当容器启动时,会把一个新的可写层被加载到镜像顶部。
这一层称为容器层,容器层之下都是镜像层。

docker commit 镜像提交

docker commit -m="描述" -a="作者" 容器ID 目标镜像:[TAG]

测试

#安装并启动nginx
docker run -d --name nginx01 -p 3344:80 nginx

#进入容器
docker exec -it nginx01 /bin/bash

#安装vim
apt-get update
apt-get install vim
#修改nginx主页
vim /usr/share/nginx/html/index.html
#退出容器
CTRL+P+Q

#提交版本
docker ps
docker commit -a="itxiaoma" -m="add vim" c1ab7a56364f nginx-vim:1.0
docker stop c1ab7a56364f

#运行新的版本
docker run -d  -p 3344:80 nginx-vim:1.0

访问
image.png


IT小马
1.2k 声望166 粉丝

Php - Go - Vue - 云原生