Skip to content

Docker 基础概念 ​

什么是 Docker?与虚拟机的区别 ​

Docker 是什么? ​

Docker 是一个 容器化平台,允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中,并在任何支持 Docker 的环境中运行。

Docker vs 虚拟机(VM) ​

特性Docker(容器)虚拟机(VM)
虚拟化级别操作系统级虚拟化(共享宿主机内核)硬件级虚拟化(Hypervisor 模拟硬件)
启动速度秒级启动(轻量级)分钟级启动(需启动完整 OS)
资源占用低(共享内核,无额外 OS 开销)高(每个 VM 需独立 OS 和资源)
隔离性进程级隔离(较弱,共享内核)完全隔离(独立内核,安全性更高)
适用场景微服务、CI/CD、快速部署传统应用、强隔离需求(如不同 OS 环境)

总结:

  • Docker 更轻量、更快,适合现代云原生应用。

  • VM 隔离性更强,适合传统虚拟化需求。

Docker 架构(Docker Engine、Images、Containers、Registry) ​

Docker 核心组件 ​

  1. Docker Engine

    • Docker 守护进程(dockerd):管理容器生命周期。

    • REST API:提供接口与 Docker 交互。

    • CLI(docker 命令):用户操作入口(如 docker run)。

  2. Images(镜像)

    • 只读模板,包含运行应用所需的代码、库、环境配置。

    • 例如:mysql:8.0、nginx:alpine。

  3. Containers(容器)

    • 镜像的运行实例,具有可写层(存储运行时数据)。

    • 例如:docker run -d nginx 会从 nginx 镜像创建一个容器。

  4. Registry(镜像仓库)

    • 存储和分发镜像的服务:

      • Docker Hub(默认公共仓库,如 docker pull ubuntu)。

      • 私有仓库(如 Harbor、AWS ECR)。

Docker 工作流程 ​

  1. 用户通过 docker pull 从 Registry 下载镜像。

  2. 使用 docker run 基于镜像创建容器。

  3. 容器运行时,Docker Engine 管理其资源。

Docker 核心概念:镜像、容器、数据卷、网络 ​

镜像(Image) ​

  • 特点:

    • 分层存储(Layer),每一层是只读的(如 Ubuntu 基础层 + Nginx 安装层)。

    • 通过 Dockerfile 构建(docker build -t my-image .)。

容器(Container) ​

  • 特点:

    • 基于镜像创建,添加一个可写层(存储运行时数据)。

    • 生命周期:创建 → 启动 → 停止 → 删除。

    • 示例:

bash
docker run -d --name my-nginx nginx  # 创建并运行容器
docker exec -it my-nginx bash       # 进入容器

数据卷(Volume) ​

  • 作用:持久化容器数据(避免容器删除后数据丢失)。

  • 两种方式:

    • Bind Mount(直接挂载主机目录):
bash
docker run -v /host/path:/container/path mysql
- Named Volume(Docker 管理的数据卷):
bash
docker volume create my-vol
docker run -v my-vol:/container/path mysql

网络(Network) ​

  • 作用:管理容器间通信(如 Web 服务连接 MySQL)。

  • 常见模式:

    • bridge(默认):容器通过虚拟网络通信。

    • host:容器直接使用主机网络(高性能,低隔离)。

    • none:无网络(仅用于特殊场景)。

  • 示例:

bash
docker network create my-net
docker run --network my-net my-app

🔹 总结 ​

  • Docker 是轻量级容器技术,比 VM 更高效。

  • 镜像是模板,容器是运行实例,数据卷持久化存储,网络管理通信。

  • 核心命令:docker pull、docker run、docker build、docker network。

接下来可以讨论:

  • Docker 安装与配置(如何在不同系统安装 Docker)。

  • 基础命令实战(拉取镜像、运行容器、查看日志)。