mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-27 12:15:34 +00:00
Remove blank lines after code block markers
This commit is contained in:
@@ -18,7 +18,6 @@ flowchart TD
|
||||
Host --> Proxy["Docker Proxy<br/>端口映射 (8080 -> 80)"]
|
||||
Proxy --> Container["容器 (Class B: 80)"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 9.5.2 端口映射方式
|
||||
@@ -30,12 +29,10 @@ Docker 提供了多种方式来指定端口映射。
|
||||
使用 `-p <宿主机端口>:<容器端口>` 格式:
|
||||
|
||||
```bash
|
||||
|
||||
## 将宿主机的 8080 端口映射到容器的 80 端口
|
||||
|
||||
$ docker run -d -p 8080:80 nginx
|
||||
```
|
||||
|
||||
此时访问 `http://localhost:8080` 即可看到 Nginx 页面。
|
||||
|
||||
**多种格式**:
|
||||
@@ -54,7 +51,6 @@ $ docker run -d -p 8080:80 nginx
|
||||
```bash
|
||||
$ docker run -d -P nginx
|
||||
```
|
||||
|
||||
查看映射结果:
|
||||
|
||||
```bash
|
||||
@@ -62,7 +58,6 @@ $ docker ps
|
||||
CONTAINER ID PORTS
|
||||
abc123456 0.0.0.0:49153->80/tcp
|
||||
```
|
||||
|
||||
此时 Nginx 被映射到了宿主机的 49153 端口。
|
||||
|
||||
---
|
||||
@@ -80,7 +75,6 @@ $ docker port mycontainer
|
||||
80/tcp -> 0.0.0.0:8080
|
||||
80/tcp -> [::]:8080
|
||||
```
|
||||
|
||||
#### docker ps
|
||||
|
||||
运行 `docker ps` 可以查看到所有容器的端口映射列表:
|
||||
@@ -90,7 +84,6 @@ $ docker ps
|
||||
CONTAINER ID IMAGE PORTS NAMES
|
||||
abc123456 nginx 0.0.0.0:8080->80/tcp web
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 9.5.4 最佳实践与安全
|
||||
@@ -104,12 +97,10 @@ abc123456 nginx 0.0.0.0:8080->80/tcp web
|
||||
如果不希望对外暴露 (例如数据库服务),应绑定到 `127.0.0.1`:
|
||||
|
||||
```bash
|
||||
|
||||
## 仅允许本机访问
|
||||
|
||||
$ docker run -d -p 127.0.0.1:3306:3306 mysql
|
||||
```
|
||||
|
||||
#### 2. 避免端口冲突
|
||||
|
||||
如果宿主机 8080 已经被占用了,容器将无法启动。
|
||||
@@ -126,7 +117,6 @@ $ docker run -d -p 127.0.0.1:3306:3306 mysql
|
||||
```bash
|
||||
$ docker run -d -p 53:53/udp dns-server
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 9.5.5 实现原理
|
||||
@@ -136,12 +126,10 @@ Docker 使用 `docker-proxy` 进程 (用户态) 或 `iptables` DNAT 规则 (内
|
||||
当流量到达宿主机端口时,iptables 规则将其目标地址修改为容器 IP 并转发:
|
||||
|
||||
```bash
|
||||
|
||||
## 简化的 iptables 逻辑
|
||||
|
||||
iptables -t nat -A DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:80
|
||||
```
|
||||
|
||||
这也是为什么你在容器内部看到的访问来源 IP 通常是网关 IP (如 172.17.0.1),而不是真实的外部 Client IP (除非使用 host 网络模式)。
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user