docker快速搭建nginx,并端口放行

本文详细介绍了如何通过Docker部署Nginx服务器,包括配置文件操作、临时容器使用、防火墙设置与端口放行的过程,适合IT运维和开发人员参考。
  1. 先从服务器拉取镜像
docker pull nginx
  1. 新建本地nginx相关配置存放空间
mkdir -p /data/nginx/{conf,html,logs} 
  1. 创建用于拷贝配置的临时ngxin容器
docker run --name nginx-test -p 80:80 -d nginx
  1. 拷贝配置
docker cp nginx-test:/etc/nginx/conf.d /data/nginx/conf/
docker cp nginx-test:/etc/nginx/nginx.conf /data/nginx/
docker cp nginx-test:/usr/share/nginx/html/ /data/nginx/
  1. 停止并删除临时nginx容器
docker stop nginx-test
docker rm nginx-test
  1. 创建nginx容器,并根据需要配置端口,挂载配置文件
docker run --name nginx -p 80:80 --net host -v /data/nginx/conf/conf.d:/etc/nginx/conf.d -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/html/:/usr/share/nginx/html/ -v /data/nginx/logs/:/var/log/nginx/ --privileged=true -d nginx
  1. 如服务器开启防火墙,则根据需要进行端口放行

(1) 查看防火墙运行状态:

firewall-cmd --state

(2) 查看防火墙详细状态

firewall-cmd --list-all

(3) 新增放行端口(永久),端口号根据实际情况确定

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=12800/tcp

(4) reload防火墙

firewall-cmd --reload

(5) 校验端口是否放行

firewall-cmd --query-port=80/tcp
firewall-cmd --query-port=12800/tcp

到这里就结束了。


其它:

开启或关闭防火墙

systemctl stop firewalld.service
systemctl start firewalld.service

关闭端口放行

firewall-cmd --permanent --remove-port=80/tcp
firewall-cmd --permanent --remove-port=12800/tcp
firewall-cmd --reload
### 解决 Docker 容器内 Nginx 端口不能被外部访问的问题 #### 检查配置防火墙规则 为了确保 Docker 容器中的 Nginx 可以外部访问,需确认防火墙允许所需的端口通信。如果防火墙阻止了特定端口的数据包,则即使正确设置了 Docker端口映射,仍然无法实现外部访问。 对于 Linux 系统上的 `firewalld` 防火墙管理工具: - 使用命令查看当前防火墙的状态以及是否正在运行: ```bash systemctl status firewalld ``` - 若要临时停止防火墙以便测试连通性(不建议长期这样做),可以执行以下命令来关闭它: ```bash systemctl stop firewalld.service ``` 然而,在生产环境中更推荐的做法是在不影响其他安全策略的前提下添加例外规则而不是完全禁用防火墙。这可以通过向防火墙中增加相应的入站规则完成,比如开放 HTTP 或 HTTPS 流量对应的 TCP 端口[^1]。 #### 正确设置 Docker 端口映射 当启动带有 `-p` 参数的 Docker 容器时,实际上就是在定义宿主机与容器之间的端口转发关系。例如,要使本地机器上的 8080 端口连接到 Nginx 容器内的第 80 端口,应该这样创建容器实例: ```bash docker run -d -p 8080:80 nginx ``` 这里的关键在于理解 `-p` 后面跟的是 `<host_port>:<container_port>` 形式的参数值对,其中第一个数字代表宿主机对外开放的服务监听地址;第二个则是目标应用在各自命名空间里实际占用的位置[^2]。 #### 排除常见错误原因 有时尽管已经按照上述方法进行了适当调整但仍遇到问题,这时可能是因为某些细节处理不当所引起的。例如,默认情况下 Web 浏览器尝试通过标准HTTP协议即TCP/80去请求资源,而如果我们指定了不同的外部端口号如上面例子中的 8080 ,那么就需要显式地将其加入 URL 中以形成完整的路径,形如 http://your_server_ip:8080 。另外还需注意检查服务器提供商的安全组设置,确保其也放行了相应端口流量[^3][^4]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值