docker部署nginx并使外网能访问

一、docker启动

1、方案一(不建议使用)

bash 复制代码
# 运行提示WARNING: Published ports are discarded when using host network mode
docker run -d --name nginx -p 80:80 --net host nginx

2、方案二

bash 复制代码
# 启动容器,centOs7内核版本太低访问不了,需要像下面compose一样升级内核
docker run -d --name nginx -p 80:80 nginx

# 请求测试,内核升级后能成功
curl http://localhost:80

# 指定挂载数据卷要用绝对路径,相对路径要报错
docker run -d --name nginx -p 8090:8090 -p 8091:8091 --network test-net -v /root/data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /root/data/nginx/html:/usr/share/nginx/html nginx

# 请求测试,内核升级后能成功
curl http://localhost:8091
二、docker compose启动
bash 复制代码
配置yml:
version: "3.8"

services:
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - "80:80"
      - "8090:8090"
      - "8091:8091"
    volumes:
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
      - "./nginx/html:/usr/share/nginx/html"
    networks:
      - test-net
networks:
  test-net:
    name: test-net

# 需要预创建volumes需要挂载的nginx.conf文件在对应目录下(/预备文件/nginx复制)

# 启动多容器
docker compose -f ./env-compose.yml up -d

# 请求测试,请求不通报错,原因是环境使用的centOs7内核3.10,内核版本太低需要升级
# 解决方法参考以下博客:
# https://www.cnblogs.com/xzkzzz/p/9627658.html
curl http://localhost:80

shutdown -r -t 3 # 3秒后重启

# 如果改了nginx.conf,需要重启容器
docker compose -f ./env-compose.yml restart nginx
相关推荐
xianyuCcCcCCCcc3 小时前
Nginx 深度解析:从基础架构到反向代理与负载均衡实战全解
linux·运维·nginx·bash·负载均衡
冠希陈、5 小时前
Nginx部署SSL,导致多站点串站问题
运维·nginx·ssl
AAA@峥7 小时前
K8s 流量入口管理|Ingress 核心原理 + ingress-nginx 部署 + 生产实战案例合集
nginx·容器·kubernetes
GlueNa2SiO39 小时前
10-Docker生产环境部署与K8s入门
笔记·学习·docker·容器·kubernetes
Kismet_nvi9 小时前
《Kubernetes 网络进阶、调度策略与自动扩缩容实战精要》
网络·容器·kubernetes
蜀道山老天师10 小时前
Zabbix监控Docker容器应用实践完整指南
linux·运维·docker·容器·zabbix
星空10 小时前
WordPress在docker中部署
运维·docker·容器
wsad053211 小时前
CentOS Stream 10 Docker 容器无法访问外网:xt_addrtype 内核模块缺失解决方法
linux·网络·docker·云原生·eureka·centos
怦怦蓝11 小时前
Windows 安装 Docker Desktop 踩坑完整实战指南(WSL2 故障排错实录)
windows·docker·容器
看-是灰机12 小时前
Harbor Framework
docker