一、基础概念
Docker容器是一种轻量级、可移植的软件打包和部署技术。它允许开发者将应用程序及其依赖项、运行时环境等打包到一个称为容器的单一单元中。这个容器可以在支持任何支持Docker的环境中运行,而不需要担心底层系统的配置差异。
(一)Docker底层实现
Docker的底层原理涉及到多个组件,主要包括Linux内核特性(cgroup/namespace)、容器镜像、容器运行时、Union文件系统(联合文件系统)等技术。
- namespace(命名空间)
Linux内核特性,namespace用来隔离系统资源,包括:
* UTS:主机名和域名
* IPC:进程间通信
* PID:进程编号
* Network:网络设备、端口、网络栈
* Mount:文件系统
* User:用户和用户组
- cgroups(控制组)
Linux内核特性,cgroups可以限制和隔离Linux进程组所使用的物理资源,如CPU、内存、磁盘和网络IO
- image(容器镜像)
容器镜像是一个包含应用程序代码、运行时环境、系统工具和库等的只读文件。它是容器的静态表示,用于创建容器的运行实例。
- container(容器):
容器是用镜像创建的运行实例,可以被启动、停止、删除和迁移。