请问如果要在docker中复现该操作,那么要如何设计容器和宿主机之间的端口映射
时间: 2024-11-09 18:17:05 浏览: 9
docker容器无法访问宿主机端口的解决
在Docker中复现这个操作,你需要在运行容器时配置端口映射,这样外部的访问请求会被转发到容器内的特定端口。假设你的目标是让外部访问者通过`https://example.com/appK`访问容器里的100K端口,你可以这样做:
1. **创建Dockerfile** (如果你还没有):
```Dockerfile
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]
```
这里假设你已经有了一个简单的Nginx配置文件`nginx.conf`。
2. **创建Nginx配置文件(nginx.conf)**:
编辑Nginx配置,添加类似之前提到的代理设置:
```
server {
listen 443 ssl;
server_name example.com;
location /appK {
proxy_pass http://localhost:100K; # 这里是映射到容器内100K端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
3. **构建并运行Docker镜像**:
```bash
docker build -t my-nginx-app .
docker run -d --name my-nginx-container -p 443:443 -p 100K:100K my-nginx-app
```
`-p 443:443` 表示将宿主机的443端口映射到容器的443端口,而`-p 100K:100K` 将宿主机的某个端口(例如100K)映射到容器的100K端口。
现在,外部访问`https://example.com/appK`就能看到192.168.191.110:100K服务的内容了。请注意,这里100K是一个示例端口号,实际使用时需替换为具体的端口号。
阅读全文