
Docker 是什么?

Docker 是一个开源的容器化平台,它可以让开发者打包应用程序及其依赖项到一个可移植的容器中。这个容器可以在任何运行 Docker 引擎的主机上运行,而不需要担心底层基础设施的差异。
Docker 的核心概念

- 镜像(Image): 镜像是一个只读的模板,包含了运行容器所需的所有内容,包括操作系统、运行时、应用程序、库、环境变量、配置文件等。
- 容器(Container): 容器是镜像的一个运行实例。你可以创建、启动、停止、移动和删除容器。每个容器都是相互隔离的,拥有自己的文件系统、网络配置和进程空间。
- 仓库(Repository): 仓库是用来保存镜像的地方,可以是私有的也可以是公有的。Docker Hub 是一个公共的镜像仓库,提供了大量的官方和社区镜像。
Docker 的工作原理

- 创建镜像:
- 基于基础镜像: 从一个基础镜像(如 Ubuntu、CentOS)开始,通过添加、修改、删除文件和安装软件来创建新的镜像。
- 使用 Dockerfile: Dockerfile 是一个文本文件,包含了一系列指令,用于自动构建镜像。
- 运行容器:
- 从镜像创建容器: 基于一个镜像创建一个新的容器实例。
- 启动容器: 启动容器,容器中的应用程序开始运行。
- 容器的生命周期:
- 启动: 启动一个停止的容器。
- 停止: 停止一个正在运行的容器。
- 重启: 重启一个停止的容器。
- 删除: 删除一个容器,容器中的所有数据都会丢失。
Docker 的优势
- 快速部署: 容器的启动速度非常快,可以快速部署应用程序。
- 可移植性: 容器可以在不同的环境中运行,而不需要修改应用程序。
- 隔离性: 每个容器都是相互隔离的,可以防止应用程序之间相互影响。
- 高效利用资源: 多个容器可以共享同一个宿主机内核,提高资源利用率。
- 简化部署: Docker 提供了一套完整的工具,可以简化应用程序的部署和管理。
Docker 的核心技术
- 命名空间(Namespace): 用于隔离容器的进程、网络、文件系统等。
- 控制组(Cgroup): 用于限制容器的资源使用,如 CPU、内存、磁盘 I/O。
- 联合文件系统(UnionFS): 用于构建镜像,将多个镜像层叠起来,形成一个新的镜像。