
Docker指南
AI摘要
北海のAI
Docker 核心概念与实战指南
1. 基础概念体系
1.1 核心定义
- Docker:一种依赖高效的软件部署技术,利用容器化技术封装独立的运行环境。
- 宿主机 Host:承载容器运行的物理机或虚拟机。
1.2 核心三要素类比
| 概念 | 英文 | 类比对象 | 描述 |
|---|---|---|---|
| 镜像 | Image | 模具 / 游戏安装包 | 只读模板,是创建容器的基石。 |
| 容器 | Container | 糕点 / 运行中的游戏 | 基于镜像运行的实例,可读写,相互隔离。 |
| 仓库 | Registry | 商店 / 代码仓库 | 存放和分享镜像的场所,如 Docker Hub。 |
1.3 容器与虚拟机对比
- Docker 容器:共享宿主机操作系统内核,启动秒级,资源占用极小(MB级)。
- 虚拟机 VM:拥有完整的操作系统内核,启动慢(分钟级),资源占用大(GB级)。
2. 环境搭建与安装
2.1 Linux 环境安装 推荐方案
Linux 是 Docker 的原生环境,性能最好。
1 | # 1. 自动下载并安装 官方脚本 |
2.2 Windows 环境安装
Windows 下 Docker 依赖 WSL2 即适用于 Linux 的 Windows 子系统。
- 启用系统功能:在“启用或关闭 Windows 功能”中勾选:
- Hyper-V 部分版本需要
- Virtual Machine Platform 虚拟机平台
- Windows Subsystem for Linux
- 安装更新 WSL 管理员 CMD 中执行:
1
2wsl --update
wsl --set-default-version 2 - 安装软件:下载并安装 Docker Desktop for Windows。
- 注意:使用时需保持 Docker Desktop 软件在后台运行。
2.3 Mac 环境安装
- 确认芯片架构:
- Intel 芯片:下载
Mac with Intel chip版本。 - M1/M2/M3 芯片:下载
Mac with Apple silicon版本。
- Intel 芯片:下载
- 安装:拖拽至 Applications 文件夹并启动即可。
3. 镜像管理与配置
对于需要的镜像可以直接去这个网站找去:https://hub.docker.com/
3.1 基础镜像命令
1 | # 1. 下载镜像 |
3.2 配置镜像加速器
由于 Docker Hub 服务器在国外,国内访问经常超时,必须配置国内镜像源。
Linux 配置方法:
编辑 /etc/docker/daemon.json 文件(若不存在则创建):
1 | { |
注意:
- 推荐源:南京大学
docker.nju.edu.cn、DaoClouddocker.m.daocloud.io较为稳定。- 私人源:阿里云容器镜像服务(免费)会提供一个专属的加速地址(如
https://xxxx.mirror.aliyuncs.com),最为稳定,建议去阿里云官网申请。
生效命令:
1 | sudo systemctl daemon-reload |
Windows 与 Mac 配置方法:
- 打开 Docker Desktop 设置 Settings。
- 进入 Docker Engine 选项卡。
- 在 JSON 编辑框中添加
"registry-mirrors"字段(内容同上)。 - 点击 Apply & Restart。
3.3 CPU 架构兼容性
- AMD64 x86_64:标准的 Windows/Linux 服务器架构。
- ARM64:Mac M系列芯片和部分移动端架构。
- 机制:
docker pull会自动拉取匹配当前架构的镜像。Mac 上运行 AMD64 镜像时,Docker 会自动使用 QEMU 进行转译,但性能会有所损耗。
4. 容器生命周期管理
4.1 创建并启动容器 docker run
这是最高频使用的命令,参数极其重要。
1 | # 语法模板 |
参数详解:
-dDetached:后台静默运行。--name:给容器起一个好记的名字。-pPort:宿主机端口:容器端口。将访问宿主机的 8080 转发到容器的 80。-vVolume:宿主机路径:容器路径。挂载数据卷,实现数据持久化。-eEnvironment:设置环境变量(如数据库密码-e MYSQL_ROOT_PASSWORD=123)。--restart always:开机自启,或挂掉后自动重启。
4.2 数据卷挂载类型
| 类型 | 示例命令 | 特点 |
|---|---|---|
| 绑定挂载 Bind Mount | -v /opt/data:/data |
宿主机路径固定,适合开发调试。会覆盖容器内原有文件。 |
| 命名卷 Named Volume | -v my-vol:/data |
由 Docker 自动管理路径。会保留容器内原有文件并同步,适合生产环境数据库存储。 |
卷管理命令:
1 | docker volume create my-vol # 创建卷 |
4.3 容器调试与交互
1 | # 1. 查看容器日志 排错必备 |
4.4 容器状态控制
1 | docker ps # 查看运行中的容器 |
5. 镜像构建 Dockerfile
Dockerfile 是构建镜像的“施工图纸”。
5.1 核心指令解析
1 | # 1. 指定基础镜像 必选 |
5.2 构建与发布流程
1 | # 1. 登录 Docker Hub |
6. 网络模式详解
Docker 容器默认处于隔离网络中,需通过网络模式进行通信。
6.1 三大核心网络模式对比
| 模式名称 | 命令参数 | 特点描述 | 适用场景 |
|---|---|---|---|
| Bridge 桥接模式 | --network bridge |
默认模式。容器拥有独立的 IP (如 172.17.x.x),与宿主机网络隔离,必须通过端口映射 (-p) 才能对外服务。 |
绝大多数单机容器应用。 |
| Host 主机模式 | --network host |
容器直接共享宿主机的 IP 和网络栈。没有 IP 隔离,无需端口映射,容器端口直接占用宿主机端口。 | 对网络性能要求极高,或端口映射过于繁琐的场景。 |
| None 无网络 | --network none |
容器只有 loopback 接口,无法联网。 | 安全性要求极高的离线任务或批处理作业。 |
6.2 自定义网络与服务发现
为什么需要自定义网络?
默认的 Bridge 网络虽然可以通信,但容器之间只能通过 IP 访问(IP 可能会变)。自定义网络的核心优势在于内置 DNS 服务发现,容器之间可以直接通过 “容器名” 进行通信。
实战操作:
1 | # 1. 创建自定义网络 |
6.3 网络管理与排错
1 | # 列出所有网络 |
7. 容器编排 Docker Compose
7.1 核心作用与架构
Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。它解决了手动执行大量 docker run 命令的痛点。
- 工程化:通过一个 YAML 文件配置应用的所有服务。
- 一键管理:一条命令即可启动、停止、重启整个应用栈。
- 服务依赖:可以定义容器启动的先后顺序。
7.2 配置文件详解 docker-compose.yml
1 | version: '3.8' # Compose 文件格式版本 |
7.3 环境变量管理 .env
在项目根目录创建 .env 文件,Compose 会自动读取,避免敏感信息硬编码在 YAML 中。
文件内容 (.env):
1 | DB_PASSWORD=secret123 |
YAML 中调用:
1 | environment: |
7.4 常用管理命令清单
1 | # 启动所有服务 |
8. 总结
- 重点掌握
docker run、docker ps、docker logs、docker exec这四个命令。 - 理解 卷 Volume 的数据持久化机制和 网络 Network 的通信机制(特别是自定义网络的 DNS 解析)。
- 学会编写 Dockerfile 定制专属镜像,并使用 Docker Compose 管理复杂的微服务架构。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自北海博客-码海撷贝
评论 ()






