Docker
Docker 是一个容器化平台,主要:实现应用、与环境的隔离,从而确保应用能够在不同的操作系统上保持一致性。
Docker 容器,它通过:对计算机资源的隔离、与控制,为应用提供一个独立、安全的运行环境。
正因如此,Docker 容器,就像集装箱一样,可以将应用及其依赖打包在一起,并在不同的环境中保持一致。
Docker工作原理
Docker工作原理,如下图所示:
Docker主要包含: Docker 镜像、Docker 容器 、和 Docker 仓库这三大组件。
Docker的这三个组件,共同构成了 Docker 的工作原理流程。
Docker镜像
Docker 镜像是一个独立、可移植的应用程序环境,类似于虚拟机快照。
镜像是容器的构建基础,可以认为是一个“打包好的应用环境”。
Docker 镜像,具有层次结构,每一层代表了一次操作(如:安装软件、复制文件。。。等),并且可以复用,提升了存储和构建效率。
并且,每个镜像基于 Linux 文件系统,包含:一个完整的运行时环境,镜像可以分层构建,这使得 Docker 镜像具有高度的复用性。
Docker仓库
Docker 仓库,是用于存储/和分发 Docker 镜像的服务。
类似于代码版本控制系统,Docker 仓库用于集中管理镜像,使开发者可以轻松共享、和获取。
比如:大家经常使用的“Docker Hub”:这是默认的公共仓库,提供了大量官方镜像。
Docker 镜像,是通过 Dockerfile 构建的,构建完成的镜像,可以被发布到 Docker Hub 等仓库中,方便共享、和分发。
Docker容器
Docker 容器,是镜像的运行实例,提供了应用的隔离环境。
每个容器:都有独立的文件系统、网络、进程空间,可以避免不同应用之间的冲突,就类似“集装箱”。
如下图所示:
Docker 使用 Linux 的 Namespace 、和 Cgroups 实现了轻量级的容器,性能开销低,启动速度快。
Namespaces
Namespaces ,是 Linux 提供的一种机制,用来创建进程隔离环境,让每个容器拥有自己独立的系统视图。
比如:包含有独立的进程空间、网络空间、和文件系统…空间等等。
Cgroups
Cgroups(Control Groups),是一种 Linux 内核特性,用来限制、统计和隔离进程的资源使用量。
Cgroups,开源控制组限制容器的资源使用量,包括: CPU、内存、磁盘 I/O 等,防止某个容器过度使用主机资源。
通过Namespaces 、和 Cgroups 来实现轻量级的容器,这使得 Docker 容器能够隔离进程。
并限制资源,提供类似虚拟机的功能,但占用资源更少、启动更快。
mikechen睿哥
mikechen睿哥,十余年BAT架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》