Docker 入门笔记 - Docker镜像

docker  

是什么?

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

加载原理

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

为什么CentOS都是好几G,docker才200M?

对于一个精简的os,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用Host的kernel. 自己只需要提供rootfs就行了。由此可见对于不同的Linux发行版本,bootfs基本是一致的,rootfs会有差别,因此不同的发行版本可以公用bootfs.

为什么docker镜像采用分层结构?

最大的好处就是-共享资源
比如: 有多个镜像都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,同时内存中也只需要加载一份base镜像,就可以分所有容器服务了,而且镜像的每一层都可以被共享。

镜像命令

  • 查看本地镜像
docker images  
docker search  
docker pull  
docker rmi  
  • 提交容器副本使之成为一个新的镜像
docker commit  
docker commit -m "描述信息" -a "作者" 容器ID 要创建的目标镜像名:[标签名]

docker run -it -p 8081:80 nginx  
docker run -it -p 8082:80 leoiceo/nginx:1.1  
docker run -d -p 8082:80 leoiceo/nginx:1.1

docker commit -a "leoiceo" -m "update index web" 92f1454b19a4 leoiceo/nginx:1.1