在该 Dockerfile 里,我们先通过一个基础镜像 python:3.8-slim-buster,安装依赖并复制应用到工作目录,最后指定应用的进程,即启动命令。在该描述下,我们会得到如下容器视图:
该容器的进程是“python3 app.py”,运行在由 Linux namespace + Linux cgroups 构成的隔离环境里。而它所需要的各种文件,包括 Python、app.py 和整个操作系统文件,则由多个联合挂载在一起的 rootfs 提供。该 rootfs 的最下层,是只读的 Docker 镜像。在 Docker 镜像之上,是 Docker 的管理器添加的 init 层,用于临时存放被管理器修改过的 /etc/hosts 等文件。在 rootfs 的最上层是读写层,以 Copy-On-Write 的方式存放所有对只读层文件的修改,和容器声明的 Volume 挂载点。从该容器视图里,我们可以总结出一个运行中的 Linux 容器,由以下内容构成:
一组联合挂载的 rootfs,这部分我们称之为容器的“镜像”(Image)。
一个由 Linux namespace + Linux cgouprs 构成的隔离环境,这部分我们称之为容器的“运行时”(Runtime)。
Docker install前文已经介绍了容器的本质和其背后的逻辑,我们现在以 Ubuntu 18 LTS 为例,介绍如何安装 Docker,为后面的 Kubernetes 做好准备。
配置 REPOSITORY1、更新 apt 包管理器索引和配置 apt 能够使用 HTTPS 的仓库。
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release2、添加 Docker 官方 GPG 公钥。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg3、指定使用稳定版的 Docker 版本。
echo \ "deb [arch=amd64 signed-by=http://www.likecs.com/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 安装 Docker engine1、更新 apt 包管理器索引,然后安装最新的稳定版 Docker engine。
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io2、安装完成后,通过执行 hello-world镜像,验证 Docker engine。
sudo docker run hello-world现在安装完成,可以开始使用 Docker 了。
容器编排作为一名开发者,我们其实并不关心容器运行时的差异,因为在整个“开发-发布”流程中,真正发布的其实是容器镜像。对于云服务商来说,则可以通过容器镜像将他们和潜在用户(如开发者)直接关联起来。因此,能够定义容器组织和管理规范的“容器编排”技术,成为了云计算最热门的技术。这其中,最具代表性的容器编排工具有如下两个:
• Docker 公司的 Compose+Swarm 组合;
• Google 与 RedHat 公司共同主导的 Kubernetes 项目。而目前该项目已经成为业界标准。
接下来的 Kubernetes 普及系列,将会带大家深入了解目前承载着云原生发展的绝对主角——Kubernetes,让我们下回再见!