计算机网络/计算机科学与应用/系统/运维/开发

RockyLinux 10 Docker 部署Nginx

1、拉取nginx

# 拉取最新稳定版
docker pull nginx

# 指定固定版本(推荐生产使用,例如1.27)
docker pull nginx:1.27

查看本地镜像
docker images | grep nginx


2、两种运行方式

方式一:快速临时运行 (仅供测试使用,无持久化)

[root@localhost ~]# docker run -d --name mynginx -p 80:80 nginx:latest 
cd362f284a83533d8e1d518317a6a028c312be88207a35313d7731ccd8dbcec1


参数说明:

-d 后台守护运行

--name nginx-test 容器名称

-p 宿主机端口:容器内端口 端口映射


访问服务器 IP 即可打开 Nginx 默认页面:http://服务器IP

image.png


停止删除容器

docker stop nginx-test
docker rm nginx-test


方式二:生产推荐(挂载目录持久化,可自定义页面、配置、日志)

1、创建宿主机存放目录

mkdir -p /data/nginx/{conf,html,logs}

/data/nginx/html:存放网站静态页面

/data/nginx/conf:nginx.conf 配置文件

/data/nginx/logs:访问 / 错误日志


2、从临时容器复制默认配置到宿主机

先启动临时容器拷贝文件

docker run --rm nginx:1.27 cat /etc/nginx/nginx.conf > /data/nginx/conf/nginx.conf
docker run --rm nginx:1.27 cat /etc/nginx/conf.d/default.conf > /data/nginx/conf/default.conf


3、创建首页测试文件

echo "<h1>Docker Nginx 部署成功</h1>" > /data/nginx/html/index.html


4、启动持久化容器

docker run -d \
--name nginx \
-p 80:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf:/etc/nginx/conf.d \
-v /data/nginx/logs:/var/log/nginx \
--restart always \
nginx:1.27


参数解释:

-v 宿主机目录:容器目录 数据挂载,修改宿主机文件容器实时生效

--restart always 开机 / 容器崩溃自动重启


3、常见命令管理

# 查看运行容器
docker ps

# 查看 Nginx 日志
docker logs -f nginx

# 进入容器内部
docker exec -it nginx bash

# 重载 Nginx 配置(不重启容器)
docker exec nginx nginx -s reload

# 重启容器
docker restart nginx

# 停止并删除容器
docker stop nginx && docker rm nginx


4、防火墙放行80端口

# 永久放行80
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
# 查看放行列表
firewall-cmd --list-ports


5、自定义配置

编辑 /data/nginx/conf/default.conf,可修改域名、反向代理、静态缓存、SSL 等,改完执行重载:

docker exec nginx nginx -s reload


修改容器内nginx的index.html内容

方式一:进入容器内部编辑(最简单)

1、进入nginx容器

docker exec -it nginx bash


2、在容器中安装vim

apt update && apt install vim -y


3、编辑文件首页

vim /usr/share/nginx/html/index.html


写完保存退出,esc → 输入 :wq 回车


4、退出容器

exit


缺点:如果后续删除重建 Nginx 容器,修改会全部丢失。


方式二:宿主机写好文件,复制进容器(推荐)

1、在宿主机编辑自定义页面

vi /root/index.html


写入网页内容,保存


2、复制覆盖到容器内

docker cp /root/index.html nginx:/usr/share/nginx/html/index.html


刷新网页立刻生效,不需要重启 Nginx。


补充:

永久方案(以后不用反复复制)停止并删除现有容器,挂载目录启动,直接改宿主机文件:

# 准备目录
mkdir -p /data/nginx/html
# 把当前容器页面拷出来
docker cp nginx:/usr/share/nginx/html/index.html /data/nginx/html/
# 删旧容器
docker stop nginx && docker rm nginx
# 带挂载启动
docker run -d --name nginx -p 80:80 \
-v /data/nginx/html:/usr/share/nginx/html \
--restart always nginx


之后直接修改 /data/nginx/html/index.html 即可,永久保存。



只有惜缘,才有缘分;只有惜友,才有友谊。

评论

^