mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
chore: remove unused historic image files
This commit is contained in:
@@ -25,11 +25,13 @@ flowchart LR
|
||||
|
||||
### Bind Mount vs Volume
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 特性 | Bind Mount | Volume |
|
||||
|------|------------|--------|
|
||||
| **数据位置** | 宿主机任意路径 | Docker 管理的目录 |
|
||||
| **路径指定** | 必须是绝对路径 | 卷名 |
|
||||
| **可移植性** | 依赖宿主机路径 | 更好(Docker 管理) |
|
||||
| **可移植性** | 依赖宿主机路径 | 更好 (Docker 管理)|
|
||||
| **性能** | 依赖宿主机文件系统 | 优化的存储驱动 |
|
||||
| **适用场景** | 开发环境、配置文件 | 生产数据持久化 |
|
||||
| **备份** | 直接访问文件 | 需要通过 Docker |
|
||||
@@ -40,13 +42,15 @@ flowchart LR
|
||||
|
||||
#### 选择建议
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 需求 | 推荐方案 |
|
||||
|------|----------|
|
||||
| 开发时同步代码 | Bind Mount |
|
||||
| 持久化数据库数据 | Volume |
|
||||
| 共享配置文件 | Bind Mount |
|
||||
| 容器间共享数据 | Volume |
|
||||
| 备份方便 | Bind Mount(直接访问) |
|
||||
| 备份方便 | Bind Mount (直接访问)|
|
||||
| 生产环境 | Volume |
|
||||
|
||||
---
|
||||
@@ -77,6 +81,8 @@ $ docker run -d \
|
||||
|
||||
#### 两种语法对比
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 特性 | --mount | -v |
|
||||
|------|---------|-----|
|
||||
| 语法 | 键值对,更清晰 | 冒号分隔,更简洁 |
|
||||
@@ -221,7 +227,7 @@ $ docker inspect mycontainer --format '{{json .Mounts}}' | jq
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| `Type` | 挂载类型(bind) |
|
||||
| `Type` | 挂载类型 (bind)|
|
||||
| `Source` | 宿主机路径 |
|
||||
| `Destination` | 容器内路径 |
|
||||
| `RW` | 是否可读写 |
|
||||
@@ -277,7 +283,7 @@ $ docker run -v /host/path:/container/path:cached myapp
|
||||
|------|------|
|
||||
| `:cached` | 宿主机权威,容器读取可能延迟 |
|
||||
| `:delegated` | 容器权威,宿主机读取可能延迟 |
|
||||
| `:consistent` | 默认,完全一致(最慢) |
|
||||
| `:consistent` | 默认,完全一致 (最慢)|
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 要点 | 说明 |
|
||||
|------|------|
|
||||
| **作用** | 将宿主机目录挂载到容器 |
|
||||
|
||||
@@ -30,6 +30,8 @@ $ docker run --mount type=tmpfs,destination=/run,tmpfs-size=67108864 nginx
|
||||
|
||||
### 与 Volume / Bind Mount 对比
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 类型 | 数据位置 | 持久化 | 典型用途 |
|
||||
|------|---------|-------|---------|
|
||||
| Volume | Docker 管理目录 | 是 | 数据库、长期业务数据 |
|
||||
|
||||
@@ -19,6 +19,8 @@ flowchart LR
|
||||
|
||||
### 数据卷的特性
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 特性 | 说明 |
|
||||
|------|------|
|
||||
| **持久化** | 容器删除后数据仍然保留 |
|
||||
@@ -113,6 +115,7 @@ $ docker volume inspect my-vol
|
||||
```
|
||||
|
||||
**关键字段**:
|
||||
|
||||
- `Mountpoint`:数据卷在宿主机上的实际存储位置
|
||||
- `Driver`:存储驱动 (默认 local,也可以用第三方驱动)
|
||||
|
||||
@@ -137,7 +140,7 @@ $ docker run -d \
|
||||
|
||||
| 参数 | 说明 |
|
||||
|------|------|
|
||||
| `source` | 数据卷名称(不存在会自动创建) |
|
||||
| `source` | 数据卷名称 (不存在会自动创建)|
|
||||
| `target` | 容器内挂载路径 |
|
||||
| `readonly` | 可选,只读挂载 |
|
||||
|
||||
@@ -156,11 +159,13 @@ $ docker run -d \
|
||||
|
||||
#### 两种方式对比
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 特性 | --mount | -v |
|
||||
|------|---------|-----|
|
||||
| 语法 | 键值对,更清晰 | 冒号分隔,更简洁 |
|
||||
| 自动创建卷 | source 不存在会报错 | 自动创建 |
|
||||
| 推荐程度 | ✅ 推荐(更明确) | 常用(更简洁) |
|
||||
| 推荐程度 | ✅ 推荐 (更明确)| 常用 (更简洁)|
|
||||
|
||||
#### 只读挂载
|
||||
|
||||
@@ -312,6 +317,7 @@ $ docker run --rm \
|
||||
```
|
||||
|
||||
**原理**:
|
||||
|
||||
1. 创建临时容器
|
||||
2. 挂载要备份的数据卷到 `/source`
|
||||
3. 挂载当前目录到 `/backup`
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
## Docker 网络概述
|
||||
|
||||
Docker 容器需要网络来:
|
||||
|
||||
- 与外部世界通信 (访问互联网、被外部访问)
|
||||
- 容器之间相互通信
|
||||
- 与宿主机通信
|
||||
@@ -40,6 +41,8 @@ graph TD
|
||||
|
||||
### 核心组件
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 组件 | 说明 |
|
||||
|------|------|
|
||||
| **docker0** | 虚拟网桥,充当交换机角色 |
|
||||
@@ -105,7 +108,7 @@ ghi789... none null local
|
||||
|------|-----------------|
|
||||
| 只能用 IP 通信 | 支持容器名 DNS 解析 |
|
||||
| 所有容器在同一网络 | 更好的隔离性 |
|
||||
| 需要 --link(已废弃) | 原生支持服务发现 |
|
||||
| 需要 --link (已废弃)| 原生支持服务发现 |
|
||||
|
||||
### 创建自定义网络
|
||||
|
||||
@@ -227,6 +230,8 @@ $ docker run -d -p 8080:80 nginx
|
||||
|
||||
### 映射方式
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 参数 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `-p 8080:80` | 指定端口映射 | 宿主机 8080 → 容器 80 |
|
||||
@@ -322,6 +327,8 @@ $ docker network prune
|
||||
|
||||
## 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 概念 | 要点 |
|
||||
|------|------|
|
||||
| **默认网络** | docker0 网桥,172.17.0.0/16 网段 |
|
||||
|
||||
@@ -57,8 +57,7 @@ nameserver 114.114.114.114
|
||||
$ docker run --dns-search=example.com myapp
|
||||
```
|
||||
|
||||
#### 3. --hostname(-h)
|
||||
|
||||
#### 3. --hostname (-h)
|
||||
设置容器的主机名。
|
||||
|
||||
```bash
|
||||
@@ -91,6 +90,7 @@ $ docker run -h myweb nginx
|
||||
#### Q:容器无法解析域名
|
||||
|
||||
**现象**:`ping www.baidu.com` 失败,但 `ping 8.8.8.8` 成功。**解决**:
|
||||
|
||||
1. 宿主机的 `/etc/resolv.conf` 可能有问题 (例如使用了本地回环地址 127.0.0.53,特别是 Ubuntu 系统)。Docker 可能会尝试修复,但有时会失败。
|
||||
2. 尝试手动指定 DNS:`docker run --dns 8.8.8.8 ...`
|
||||
3. 检查防火墙是否拦截了 UDP 53 端口。
|
||||
@@ -98,6 +98,7 @@ $ docker run -h myweb nginx
|
||||
#### Q:无法通过容器名通信
|
||||
|
||||
**现象**:`ping db` 提示 `bad address 'db'`。**原因**:
|
||||
|
||||
- 你可能在使用**默认的 bridge 网络**。默认 bridge 网络**不支持**通过容器名进行 DNS 解析 (这是一个历史遗留设计)。
|
||||
- **解决**:使用自定义网络 (`docker network create ...`)。
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
### 为什么要映射端口
|
||||
|
||||
容器运行在自己的隔离网络环境中 (通常是 Bridge 模式)。这意味着:
|
||||
|
||||
- **容器之间**:可以通过 IP 或容器名 (自定义网络) 互通。
|
||||
- **宿主机访问容器**:可以通过容器 IP 访问。
|
||||
- **外部网络访问容器**:❌ 默认无法直接访问。
|
||||
@@ -124,6 +125,7 @@ $ docker run -d -p 127.0.0.1:3306:3306 mysql
|
||||
如果宿主机 8080 已经被占用了,容器将无法启动。
|
||||
|
||||
**解决**:
|
||||
|
||||
- 更换宿主机端口:`-p 8081:80`
|
||||
- 让 Docker 自动分配:`-p 80`
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 本章小结
|
||||
|
||||
相关信息如下表:
|
||||
|
||||
| 场景 | DNS 行为 | 备注 |
|
||||
|------|----------|------|
|
||||
| **默认网络** | 继承宿主机 | 不支持容器名解析 |
|
||||
@@ -13,7 +15,7 @@
|
||||
|
||||
| 要点 | 说明 |
|
||||
|------|------|
|
||||
| **-p** | 指定端口映射(常用),如 `8080:80` |
|
||||
| **-p** | 指定端口映射 (常用),如 `8080:80` |
|
||||
| **-P** | 随机映射所有 EXPOSE 的端口 |
|
||||
| **安全性** | 默认监听所有 IP,敏感服务应绑定 `127.0.0.1` |
|
||||
| **查看** | 使用 `docker port` 或 `docker ps` |
|
||||
|
||||
Reference in New Issue
Block a user