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:
@@ -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