定义
镜像是轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件。它包含运行某个软件所需要的所有内容(代码,运行时库、环境变量、配置文件)。
Docker镜像加载原理
Docker的镜像实际由一层层的文件系统(UnionFS)组成。
UnionFS 联合文件系统:分层,轻量级,高性能的文件系统,支持对文件系统的修改作为一次提交来层层叠加。
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
访问
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。