docker 部署 NginX

命令

拉取nginx镜像

复制代码
docker pull nginx:1.24

先简单启动一个镜像,获取默认配置文件,以便数据卷挂载,当然nginx大师可以选择手撸一个 nginx.conf 等配置文件

复制代码
docker run --name nginx -p 80:80 -d nginx

创建本地目录

复制代码
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/html
mkdir -p /data/nginx/logs

将容器中的配置文件拷贝到宿主机

复制代码
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /data/nginx/html

将容器停止、删除

复制代码
docker stop nginx
docker rm nginx

重新启动带宿主机数据卷的容器 方便日后修改配置文件且容器删除后配置文件不会丢失

复制代码
docker run -d \
-p 80:80 \
--name nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
nginx:1.24

问题

遇到的问题是,配置文件反向代理宿主机的8080端口时,通过

复制代码
proxy_pass http://localhost:8080;

无法调用到宿主机的8080服务。

因为此时的容器的网络模式是默认的桥接模式,与宿主机网络环境隔离。localhost和127.0.0.1都是容器内部网络回环,无法调用到宿主机的8080端口。

可以通过调用宿主机的IP地址加端口号调用本地服务。或者启动时设置网络模式为主机模式(host),此时容器使用宿主机的网络环境,那么容器的localhost与宿主机一致。

相关推荐
*星星之火*2 分钟前
【无标题】
docker·gcp·gke
姜鱼问生6 分钟前
报数据库连不上?Docker Compose 启动顺序假象:depends_on 不是万能的!
数据库·docker·容器
Vex2une10 分钟前
WSL2 Docker开发环境:2026年容器化编程性能调优指南
docker·开发环境·wsl2·容器化开发·virtiofs·dev drive·gpu直通
我滴老baby15 分钟前
自建服务20个,书签300条?我用一个Docker容器做了个“服务启动台”,手机也能打开
运维·docker·容器
lwx91485222 分钟前
Docker容器模拟主机
运维·docker·容器
java_logo43 分钟前
Docker 部署 MaxKB:轻松搭建企业级智能体平台
运维·docker·容器·知识库·智能体·maxkb·轩辕镜像
小马同学-14 小时前
K8s 控制器详解 — Deployment、ReplicaSet、DaemonSet 与 Job
云原生·容器·kubernetes
TTATTC14 小时前
单体应用如何支撑千所机构独立测评?拆解 sg-exam 行级多租户隔离与动态组卷内核
docker·开源
TTATTC14 小时前
每加一个登录端都要改 Controller?Spring Boot 泛型策略工厂与模板切面演进
docker·开源
程序员老赵15 小时前
Docker 部署 MaxKB:轻松搭建企业级智能体平台
前端·docker·agent