一条命令搞定Docker+Nginx本地环境部署:从安装到访问全流程

想在自己电脑上搭个Nginx服务器练手?不用复杂配置,今天教你用一条命令搞定Docker+Nginx部署,全程可视化操作,新手也能跟着做。

先看看你的电脑能不能跑Docker

Docker对系统要求不高,但得满足这几点:
- Windows/Mac:装Docker Desktop(需Win10专业版以上或MacOS 10.15+,支持Hyper-V或虚拟化)
- Linux:Ubuntu 20.04+/CentOS 7+,内核版本3.10以上,开启虚拟化支持

不确定Linux内核?打开终端输uname -r,看版本号就行。比如Ubuntu 20.04默认内核5.4+,完全够用。

第一步:把Docker请进电脑

Docker是容器引擎,得先装好它才能跑Nginx。不同系统安装命令不一样,这里重点讲Linux(Windows/Mac直接去Docker官网下安装包,下一步到底就行)。

Ubuntu 20.04用户看这里

打开终端,依次输这几条命令(复制粘贴就行,#后面是注释不用输):

# 更新软件源
sudo apt-get update  
# 装依赖包
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common  
# 加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -  
# 加Docker软件源(图里红框标出来的就是这行命令的效果)
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"  
# 再次更新源,装Docker
sudo apt-get update && sudo apt-get install docker-ce

装完输sudo docker --version,显示版本号(比如Docker version 24.0.6)就说明成功了。

CentOS 7用户看这里

命令稍微不同,但也简单:

# 装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2  
# 加Docker源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
# 装Docker
sudo yum install docker-ce  
# 启动Docker服务
sudo systemctl start docker

这步参考了Docker官方安装文档,放心抄作业。

核心来了:一条命令跑起Nginx容器

Docker装好后,不用手动下载Nginx安装包,直接用Docker拉镜像、起容器,一条命令搞定:

docker run --name my-nginx -p 80:80 -d nginx

命令拆解:为啥这行代码这么神?

  • --name my-nginx:给容器起个名字叫“my-nginx”,好记
  • -p 80:80:端口映射,把容器的80端口(Nginx默认端口)映射到你电脑的80端口,这样访问localhost就能到Nginx
  • -d:后台运行,关掉终端容器也不会停
  • nginx:用官方Nginx镜像(Docker会自动从Docker Hub拉最新版)

验证一下:Nginx跑起来没?

先看容器状态

终端输docker ps,如果看到“my-nginx”那行STATUS是“Up X minutes”,说明容器在运行:

CONTAINER ID   IMAGE  COMMAND                  CREATED         STATUS         PORTS                NAMES  
abc123456789   nginx  "/docker-entrypoint.…"  2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp   my-nginx

再用浏览器访问

打开Chrome/Firefox,地址栏输localhost或127.0.0.1,看到这个页面就成功了:

进阶操作:改Nginx配置文件

默认页面太单调?想自定义首页或加反向代理?得把本地文件挂载到容器里。

第一步:在电脑上建个配置文件夹

终端输:

mkdir -p ~/nginx/conf ~/nginx/html ~/nginx/logs
  • conf:放Nginx配置文件
  • html:放网页代码(比如index.html)
  • logs:存访问日志

第二步:写个简单的首页

用记事本打开~/nginx/html/index.html,写几行代码:

<!DOCTYPE html>
<html>
<head><title>我的Docker Nginx</title></head>
<body><h1>成功啦!这是我本地的Nginx</h1></body>
</html>

第三步:挂载配置文件重启容器

先停掉之前的容器:

docker stop my-nginx && docker rm my-nginx

再用新命令启动,加上文件挂载参数:

docker run --name my-nginx -p 80:80 -d \  
  -v ~/nginx/conf:/etc/nginx/conf.d \  
  -v ~/nginx/html:/usr/share/nginx/html \  
  -v ~/nginx/logs:/var/log/nginx \  
  nginx

这里的-v就是挂载本地文件夹到容器对应目录,改本地文件容器里会实时生效。

配置文件长啥样?

Nginx的基础配置长这样(存到~/nginx/conf/default.conf):


这是Nginx官方默认配置的简化版,监听80端口,把/usr/share/nginx/html作为网页根目录,详细参数可以参考nginx.org文档。

常见坑:遇到问题别慌

1. 端口被占用,启动容器报错“Bind for 0.0.0.0:80 failed”

解决:换个端口,比如用-p 8080:80,访问时输localhost:8080

2. 浏览器访问空白,容器日志有报错

看日志:docker logs my-nginx,常见原因是配置文件语法错,检查default.conf里有没有少分号

3. Linux下没权限运行docker命令

输sudo usermod -aG docker $USER,重启终端就行(参考Docker官方权限文档)

最后说两句

Docker+Nginx这套组合,不光能搭本地环境,实际工作中部署网站、做反向代理都常用。今天这条命令只是入门,后续还能学多容器管理(用Docker Compose)、镜像打包,慢慢玩起来就懂了。

觉得有用的话,收藏起来下次搭环境直接翻,有问题评论区问,我看到就回~

原文链接:,转发请注明来源!