1.4 Docker镜像
Docker镜像加载原理:
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
bootfs(boot file system)主要包含bootloader(根加载)和kernel,bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
1.4.1镜像是什么
镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。
只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
分层的镜像:以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的下载
1.4.2 Docker镜像commit操作案例
外网连通的情况下,安装vim
docker容器内执行上述两条命令:
apt-get update
apt-get -y install vim
安装完成后,commit自己的新镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
1.5本地镜像发布到阿里云
1.5.1本地镜像发布到阿里云流程
点击个人实例
选择创建镜像仓库
选择本地仓库,创建仓库
设置访问凭证,输入三行命令
1.5.4 将阿里云上的镜像下载到本地
将本地上传的镜像删除
docker rmi -f b3fd58786721
从Registry中拉取镜像,查看拉取的镜像
启动容器:docker run -it b3fd58786721 /bin/bash
总结
通过这节课了解镜像和容器是什么。如何使用docker基本命令基于当前容器 ubuntu 创建一个带有新功能镜像,发布到阿里云。Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。