想在自己电脑上搭个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)、镜像打包,慢慢玩起来就懂了。
觉得有用的话,收藏起来下次搭环境直接翻,有问题评论区问,我看到就回~
