一、Docker 环境搭建(OpenEuler 环境)

1.1 配置阿里 YUM 源

为确保 Docker 安装稳定,优先配置阿里云官方镜像源,避免官方源访问延迟问题。执行以下命令创建并写入 repo 配置文件:

cat <<EOF >> /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

1.2、安装docker

yum install -y docker-ce-28.0.3

1.3、启动docker

cat <<EOF >>/etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://0vmzj3q6.mirror.aliyuncs.com",
        "https://docker.m.daocloud.io",
        "https://mirror.baidubce.com",
        "https://dockerproxy.com",
        "https://mirror.iscas.ac.cn",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru",
        "https://vlgh0kqj.mirror.aliyuncs.com"
    ]
}
EOF
systemctl daemon-reload
systemctl enable --now docker

1.4 验证安装

执行 docker --versionsystemctl status docker,确认版本正确且服务运行正常。

二、Docker 核心概念与架构

2.1 三大核心概念

Docker 围绕镜像、容器、仓库三大核心构建,三者构成完整的容器生命周期体系:

概念 核心定义 类比理解
镜像(Image) 只读的 root 文件系统模板,包含应用、依赖、配置,是容器的 “静态蓝图” 软件安装包
容器(Container) 镜像的运行实例,基于镜像添加可写层,是独立的运行环境 安装后的软件实例
仓库(Repository) 存储与分发镜像的中心,分为公共仓库(如 Docker Hub)和私有仓库(如 Harbor) 代码代码仓库

2.2 Docker 架构

采用客户端 - 服务器(C/S)架构

  • Docker Client:用户交互入口,执行 docker run 等命令,通过 UNIX socket 与守护进程通信。
  • Docker Daemon:后台核心进程,处理镜像构建、容器启动、资源管理等所有核心逻辑。
  • Registry:镜像仓库,负责镜像的存储、拉取(pull)与推送(push)。

2.3 与虚拟机(VM)的核心区别

两者均为虚拟化技术,但核心实现与定位差异显著:

相同点

均实现资源隔离与独立环境部署,解决 “环境不一致” 问题。

不同点
维度 虚拟机(VM) Docker 容器
虚拟化层级 硬件级虚拟化(Hypervisor 模拟硬件) 操作系统级虚拟化(共享宿主机 Kernel)
资源开销 大(每个 VM 含完整 OS,GB 级占用) 小(仅含应用依赖,MB 级占用)
启动速度 慢(分钟级,需加载完整 OS) 快(秒级 / 毫秒级,直接调用宿主机内核)
隔离性 强(完全隔离,独立内核与硬件) 中(进程级隔离,共享内核)
可移植性 差(依赖 Hypervisor 与硬件配置) 强(一次封装,到处运行)

2.4 Docker 核心优势与局限性

核心优势
  1. 轻量高效:共享宿主机内核,启动快、资源占用少,简化应用分发与部署。
  2. 环境标准化:消除 “在我机器能跑,生产环境崩” 的问题,实现跨平台一致运行。
  3. 生态完善:支持主流云厂商与系统,适配微服务、CI/CD 等现代开发流程。
局限性
  1. 存储分离:容器仅负责计算,数据(日志、数据库)需通过外部挂载(如 NFS、-v 磁盘映射)持久化,避免容器删除后数据丢失。
  2. 隔离性有限:共享内核导致安全攻击面小于虚拟机,高安全隔离场景需结合虚拟机使用。
典型应用场景
  • Web 应用自动化打包与发布;
  • 自动化测试与持续集成 / 持续部署(CI/CD);
  • 服务型环境中数据库与后台应用的快速部署;
  • 搭建私有 PaaS 平台,扩展 OpenShift/Cloud Foundry 生态。

三、Docker 镜像管理核心原理

3.1 镜像分层与联合文件系统

Docker 镜像采用分层存储结构,由多个只读镜像层(Layers)叠加而成,每层对应一次增量修改(如安装依赖、拷贝文件),核心依赖联合文件系统(UnionFS) 实现:

  1. 分层结构:底层为基础镜像层(如 Ubuntu、Alpine),上层为增量构建层,所有层只读,容器启动时在顶层添加可写层
  2. 共享机制:不同镜像可共享底层基础层,仅存储差异层,大幅节省磁盘空间与拉取带宽。
  3. 核心优势
    • 共享宿主机 Kernel,降低资源开销;
    • 支持多 Linux 发行版运行,适配多样化场景;
    • 增量更新与版本管理更高效,仅修改变化层。

3.2 写时复制(Copy-on-Write, CoW)机制

CoW 是 Docker 镜像与容器交互的核心机制,核心逻辑为:

  1. 读操作:直接从只读镜像层读取文件,无复制开销,多个容器共享同一镜像层。
  2. 写操作:仅当修改镜像层文件时,才将文件复制到顶层可写层,再进行修改,原始镜像层保持只读不变。
  3. 具体操作流程
    • 添加文件:直接写入可写层;
    • 读取文件:从上至下遍历镜像层,找到后复制到可写层读取;
    • 修改文件:复制到可写层后修改,覆盖原镜像层文件;
    • 删除文件:在可写层标记删除(白障机制),不删除原始镜像层文件。

3.3 镜像标签与表示

镜像标识由四部分组成,格式为:镜像中心域名/命名空间/镜像名称:版本标签

  • 镜像中心域名:如 docker.io(官方)、私有仓库域名;
  • 命名空间:用于权限控制与镜像分类,官方镜像可省略;
  • 镜像名称:应用名称(如 nginx、mysql);
  • 版本标签:区分镜像版本(如 latest 最新版、1.24 特定版本)。

3.4 常用镜像操作命令

掌握镜像生命周期管理命令,高效处理镜像的拉取、构建、删除与导出:

命令 功能描述 示例
docker images 列出本地所有镜像 docker images
docker search 从 Docker Hub 搜索镜像 docker search nginx
docker pull 下载镜像 docker pull nginx:1.24
docker build 基于 Dockerfile 构建镜像 docker build -t myapp:v1.0 .
docker tag 为镜像设置标签 docker tag nginx:latest myharbor.com/nginx:v1
docker rmi 删除本地镜像 docker rmi nginx:1.24
docker inspect 查看镜像详细信息 docker inspect nginx:latest
docker save/load 导出 / 导入镜像为 tar 文件 docker save -o nginx.tar nginx:latest / docker load -i nginx.tar
docker commit 将容器提交为新镜像 docker commit <容器ID> mycontainer:v1

四、Docker 容器运行核心命令

docker run 是容器启动的核心命令,通过参数配置实现容器的个性化运行,核心语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

4.1 核心参数详解

参数 功能 常用场景
--name 指定容器名称 方便容器管理与识别
-d/--detach 后台运行容器,返回容器 ID 生产环境服务部署
-i/-t 交互式运行容器,分配伪终端 调试容器、执行命令
-p/-P 端口映射(物理机:容器端口)/ 随机端口 暴露容器服务端口
-v 挂载数据卷 / 宿主机目录 持久化容器数据
--privileged 赋予容器扩展权限 需访问宿主机硬件资源的场景
--restart 配置容器重启策略(always/on-failure) 保证服务高可用
--rm 容器退出后自动删除 临时测试容器,清理冗余资源

4.2 常用容器操作命令

命令 功能描述
docker ps 列出运行中的容器(加 -a 列出所有容器)
docker start/stop 启动 / 停止容器
docker exec 进入运行中的容器执行命令
docker rm 删除容器(加 -f 强制删除运行中容器)

五、学习总结

通过本次 Docker 学习,掌握了从环境搭建到核心原理的全流程:

  1. 实战完成 CentOS 9 下 Docker 的安装、配置与镜像加速,搭建稳定的学习环境。
  2. 理解 Docker 与虚拟机的核心差异,明确 Docker 轻量、高效的核心定位与适用场景。
  3. 吃透镜像分层、CoW 机制等核心原理,掌握镜像与容器的生命周期管理命令。
  4. 明确容器存储分离原则,掌握数据挂载方法,解决容器数据持久化问题。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐