Docker部署nginx:手把手教你用Docker部署

准备环境与安装Docker

开始之前,你的服务器需要装有 Docker。
推荐使用 Ubuntu 20.04+ 或 CentOS 7+。
安装命令如下:

  • Ubuntu/Debiansudo apt update && sudo apt install docker.io -y
  • CentOS/RHELsudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && sudo yum install docker-ce docker-ce-cli containerd.io -y
  • 安装完成后,启动 Docker 并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
  • 验证是否成功:sudo docker version,看到客户端和服务器版本即正常。
如果系统防火墙开启了,需放行 80 端口(后续 Nginx 默认端口),例如 CentOS 执行:sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload

拉取 Nginx 镜像并创建容器

Docker 部署 Nginx 第一步是拉取官方镜像。
打开终端执行:

sudo docker pull nginx

该命令会从 Docker Hub 下载最新版 Nginx 镜像。
拉取完成后,用以下命令启动容器:

sudo docker run -d -p 80:80 --name my-nginx nginx
  • -d:后台运行。
  • -p 80:80:将宿主机的 80 端口映射到容器的 80 端口。
  • --name my-nginx:给容器命名为 my-nginx,方便管理。
  • nginx:使用的镜像名称。

容器启动后,可以用 sudo docker ps 查看运行状态,看到 my-nginx 处于 UP 状态就说明容器正常。

配置端口映射与目录挂载(进阶)

若需要自定义 Nginx 配置或静态文件目录,可以使用目录挂载。
例如,将宿主机 /data/www 映射到容器内的 /usr/share/nginx/html,并挂载自定义配置文件:

sudo mkdir -p /data/www /data/conf
sudo docker run -d -p 80:80 --name my-nginx \
  -v /data/www:/usr/share/nginx/html \
  -v /data/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
  nginx
  • -v /data/www:/usr/share/nginx/html:将宿主机的网站目录挂载到容器。
  • -v /data/conf/nginx.conf:/etc/nginx/nginx.conf:ro:挂载自定义配置文件,:ro 表示只读。
  • 如果配置文件有错误,容器可能无法启动,此时可用 sudo docker logs my-nginx 查看错误日志。

验证 Nginx 是否正常运行

最简单的方法是在浏览器访问服务器的公网 IP 或域名。
如果看到 Nginx 默认欢迎页(Welcome to nginx),说明部署成功。

如果没有浏览器,也可以在服务器本地用 curl 测试:

curl http://localhost

返回包含 Welcome to nginx 的 HTML,即正常。
若显示 Connection refused,请检查:

  • 防火墙是否放行 80 端口。
  • 容器是否在运行:sudo docker ps
  • 端口映射是否正确:sudo docker port my-nginx 应返回 80/tcp -> 0.0.0.0:80

常见问题与避坑

Q:端口被占用怎么办?
宿主机 80 端口已使用时,更换映射端口,例如 -p 8080:80,然后通过 http://IP:8080 访问。

Q:容器启动后立刻退出?
sudo docker logs my-nginx 查看日志。常见原因是挂载的配置文件有语法错误,或映射的目录权限不足。检查配置文件内容,确保 nginx -t 测试通过。

Q:如何停止并删除容器?
sudo docker stop my-nginx && sudo docker rm my-nginx。若需同时删除镜像:sudo docker rmi nginx

Q:为什么修改了挂载目录的文件但页面没变?
注意挂载路径是否正确。可以用 sudo docker exec -it my-nginx /bin/bash 进入容器,ls /usr/share/nginx/html 确认文件是否存在。

建议每次修改配置文件后,先在本机用 nginx -t 验证,再挂载到容器,避免容器反复重启。

如果你正在处理 Docker 部署 Nginx,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
动手操作一遍就能熟练掌握 Docker 部署 Nginx 的全流程。

分享到:
上一篇
Linux服务器系统资源限制:告别Too
下一篇
网站慢?这四步服务器Web服务器优化方法亲测有效
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意