目录容器化应用什么是容器化应用应用怎么打包Docker 镜像组成联合文件系统Linux 内核Docker 结构Docker 服务与客户端Docker 客户端容器运行时Docker 引擎Docker 引擎变化Docker 引擎的架构containerdshimrunc
容器化应用
什么是容器化应用
containerized applications 指容器化的应用,我们常常说使用镜像打包应用程序,使用 Docker 发布、部署应用程序,那么当你的应用成功在 Docker 上运行时,称这个应用是 containerized applications。
应用怎么打包
容器化应用的最主要特征是使用镜像打包应用的运行环境以及应用程序,可以通过 Docker 启动这个镜像,进而将 应用程序启动起来。
将一个应用程序打包为镜像,大约分为以下过程:
编写 Dockerfile 文件 — 定义构建镜像的流程选择一个基础镜像(操作系统) — 操作系统安装应用的需要的环境 — 运行环境复制程序文件 — 应用程序启动 Dockerfile — 生成镜像
操作系统运行环境Web程序(C#)Ubuntu 18.04.NET Core Runtime3.1安装运行环境操作系统运行环境Web程序(C#)
Docker 镜像组成
以 .NET Core(C#) 程序为例,一个 Docker 镜像的层次如下图所示:
在 Docker 镜像中,操作系统是高度精简的,可能只有一个精简的 Shell,甚至没有 Shell。而且镜像中的操作系统还不包含内核,容器都是共享所在的宿主机的内核。所以有时会说容器仅包含必要的操作系统(通常只有操作系统文件和文件系统对象),容器中查看到的 Linux 内核版本与宿主机一致。
Docker 镜像的是由一系统文件组成的。
联合文件系统
Linux 有名为 Unionfs 的文件系统服务,可以将不同文件夹中的文件联合到一个文件夹中。Unionfs 有称为分支的概念,一个分支包含了多个目录和文件,多个分支可以挂载在一起,在挂载时,可以指定一个分支优先级大于另一个分支,这样当两个分支都包含相同的文件名时,一个分支会优先于另一个分支,在合并的目录中,会看到高优先级分支的文件。
Docker 中,层层组成镜像的技术也是联合文件系统,Union File System。Docker 镜像中的操作系统是根文件系统,在上一小节的图片中,可以看到有 bin、boot 等目录。我们都知道,Docker 镜像是由多层文件组成的,在上面的示例图片中有三层组成:根文件系统、环境依赖包、应用程序文件。当镜像层生成后,便不能被修改,如果再进行操作,则会在原来的基础上生成新的镜像层,层层联合,最终生成镜像。当然生成的镜像可能会因为层数太多或者操作过多,导致出现大量冗余,镜像臃肿。
Docker 的镜像分层是受 Linux Unionfs 启发而开发的,Docker 支持多种文件联合系统,如 AUFS、OverlayFS、VFS 等。
Docker 在不同系统中可以选择的联合文件系统:
Linux发行版推荐的存储驱动程序替代驱动程序Ubuntuoverlay2overlay,
暂无评论内容