Docker 技术学习笔记:从环境搭建到核心原理
·
一、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 --version 与 systemctl 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 核心优势与局限性
核心优势
- 轻量高效:共享宿主机内核,启动快、资源占用少,简化应用分发与部署。
- 环境标准化:消除 “在我机器能跑,生产环境崩” 的问题,实现跨平台一致运行。
- 生态完善:支持主流云厂商与系统,适配微服务、CI/CD 等现代开发流程。
局限性
- 存储分离:容器仅负责计算,数据(日志、数据库)需通过外部挂载(如 NFS、
-v磁盘映射)持久化,避免容器删除后数据丢失。 - 隔离性有限:共享内核导致安全攻击面小于虚拟机,高安全隔离场景需结合虚拟机使用。
典型应用场景
- Web 应用自动化打包与发布;
- 自动化测试与持续集成 / 持续部署(CI/CD);
- 服务型环境中数据库与后台应用的快速部署;
- 搭建私有 PaaS 平台,扩展 OpenShift/Cloud Foundry 生态。
三、Docker 镜像管理核心原理
3.1 镜像分层与联合文件系统
Docker 镜像采用分层存储结构,由多个只读镜像层(Layers)叠加而成,每层对应一次增量修改(如安装依赖、拷贝文件),核心依赖联合文件系统(UnionFS) 实现:
- 分层结构:底层为基础镜像层(如 Ubuntu、Alpine),上层为增量构建层,所有层只读,容器启动时在顶层添加可写层。
- 共享机制:不同镜像可共享底层基础层,仅存储差异层,大幅节省磁盘空间与拉取带宽。
- 核心优势:
- 共享宿主机 Kernel,降低资源开销;
- 支持多 Linux 发行版运行,适配多样化场景;
- 增量更新与版本管理更高效,仅修改变化层。
3.2 写时复制(Copy-on-Write, CoW)机制
CoW 是 Docker 镜像与容器交互的核心机制,核心逻辑为:
- 读操作:直接从只读镜像层读取文件,无复制开销,多个容器共享同一镜像层。
- 写操作:仅当修改镜像层文件时,才将文件复制到顶层可写层,再进行修改,原始镜像层保持只读不变。
- 具体操作流程:
- 添加文件:直接写入可写层;
- 读取文件:从上至下遍历镜像层,找到后复制到可写层读取;
- 修改文件:复制到可写层后修改,覆盖原镜像层文件;
- 删除文件:在可写层标记删除(白障机制),不删除原始镜像层文件。
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 学习,掌握了从环境搭建到核心原理的全流程:
- 实战完成 CentOS 9 下 Docker 的安装、配置与镜像加速,搭建稳定的学习环境。
- 理解 Docker 与虚拟机的核心差异,明确 Docker 轻量、高效的核心定位与适用场景。
- 吃透镜像分层、CoW 机制等核心原理,掌握镜像与容器的生命周期管理命令。
- 明确容器存储分离原则,掌握数据挂载方法,解决容器数据持久化问题。
更多推荐




所有评论(0)