Docker是云原生的核心,也是大型架构的必备技能,今天就重点详解Docker工作原理@mikechen
Docker
Docker 是一个开源的容器化平台,它可以让开发者将应用程序及其依赖打包到一个独立的容器中,实现“一次构建,随处运行”。
容器,就像一个标准化的“集装箱”,里面打包了应用程序、及其所有依赖。
与虚拟机相比,容器不需要模拟整个操作系统,而是共享宿主机的操作系统内核,使得容器启动速度更快,占用资源更少。
并且,容器将应用、及其所有依赖打包成镜像,确保在不同环境中运行的一致性,这使得应用可以轻松地在开发、测试和生产环境之间迁移。
Docker工作原理
Docker的实现,主要由以下几个组件组成:
Docker 作为一款强大的容器化平台,其核心主要为三个部分:镜像、容器 和 仓库。
Docker镜像
Docker镜像是一个只读的模板,包含了运行容器所需的所有内容,包括操作系统、应用程序、运行时、库、环境变量、配置文件…等。
Docker镜像,是创建容器的基础,如下图所示:
我们可以把镜像想象成一个快照,它记录了一个特定的软件栈的状态,类似于虚拟机的快照,但更轻量。
镜像是只读的,每次运行容器时,都会从镜像创建一个可写的容器层。
Docker 镜像,由多层文件系统组成,每一层都记录了文件的变化。
比如:新增、修改或删除…等等,这种设计提高了存储和传输效率。
Docker容器
容器,是镜像的“运行实例”,它是一个轻量级的、独立的运行环境。
每个容器都是一个独立的环境,拥有自己的文件系统、进程空间、和网络堆栈。
核心实现,包括:
- 隔离性: 每个容器都是独立的,互不干扰;
- 轻量级: 容器共享宿主机内核,所以,启动速度快;
- 可移植性: 可以在任何支持 Docker 的平台上运行。
容器,包括:应用程序、及其依赖文件,运行在完全隔离的环境中。
容器的创建、和停止都非常迅速,适合快速部署、和扩展应用程序。
并且,容器之间相互隔离,确保了应用程序的安全性、和稳定性。
Docker仓库
Docker仓库,是集中存放Docker镜像的地方。
用户可以将构建好的镜像上传到公共仓库(如:Docker Hub)、或私有仓库。
如下图所示:
Docker Hub 是一个公共的镜像仓库,用户可以从中下载各种各样的镜像。
就像一个巨大的图书馆,里面存放着海量的各种软件的容器镜像,你可以在这里找到几乎所有你想使用的软件的镜像。
比如:Java、Nginx、MySQL ….等,这些镜像可以直接下载,并用于容器化应用程序的快速部署。
除了 Docker Hub,还有其他一些知名的容器镜像仓库,例如:
阿里云容器镜像服务
阿里云提供的容器镜像服务,支持私有仓库和镜像加速。
腾讯云容器镜像服务
腾讯云提供的容器镜像服务,具有高性能、高可用等特点。
Docker总结
最后,用一张图给大家做给总结。
三者之间的关系,如下图所示:
镜像 ,是创建 容器 的基础;
仓库 ,用于存储、和管理 镜像;
容器 ,是 镜像 的运行实例。
镜像提供了一个可复用的模板,容器是镜像的运行实例,仓库则负责存储、和管理镜像。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》