环境

  • Linux 云服务器(CentOS 7.6 64bit)
  • 云服务器已安装 Docker(v26.1.4)

操作步骤

1、在 Docker Hub 网站搜索 Nginx,找到想要安装的版本。如果自己的电脑无法访问 Docker Hub,可以在 https://github.com/dongyubin/DockerHub 这个仓库找一些镜像加速网站,里面搜索想要安装的 Nginx 版本。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、在服务器执行拉取镜像命令,将 Nginx 镜像拉取到服务器。

docker pull nginx:stable-alpine3.21-perl

# 拉取特定版本镜像
docker pull nginx:[tag] # 中括号里面可以加版本号 如 nginx:1.16.1,但前提是要在 Docker Hub 网站上确定一下这个版本是否存在。

在这里插入图片描述

3、拉取完镜像后,可以通过 docker images 命令查看本地拉取的所有镜像。

在这里插入图片描述

注意事项:
Nginx 一般是根据配置文件启动的。如果我们在第一次启动的时候就挂载目录,那么因为我们宿主机是空文件,会直接导致 Nginx 容器内的配置文件被覆盖,致使启动失败。
4、通过以下命令在服务器创建好以下挂载目录:

# mkdir -p /home/nginx/  带了参数 -p 创建以下两个目录的话,这一行不需要
mkdir -p /home/nginx/logs  
mkdir -p /home/nginx/html 

# -p 参数的作用就是允许创建多级目录

5、先启动一个不挂载目录的容器。

docker run -d --name gis-core-nginx  -p 80:80 nginx

在这里插入图片描述

此时我们通过服务器 IP 地址访问的话,会看到经典的 Nginx 主页:

在这里插入图片描述

然后使用以下命令进入 Nginx 容器:

docker exec -it gis-core-nginx bash

# -it 参数表示以交互式进入容器
# bash 参数表示保留为容器终端的输入形式

进入容器后可以在 /etc/nginx/ 目录下找到 /etc/nginx/nginx.conf 文件和 /etc/nginx/conf.d 目录,其中 /etc/nginx/nginx.conf 文件是 Nginx 的主配置文件,/etc/nginx/conf.d 目录下的 default.conf 文件是默认的 Server 配置文件。

在这里插入图片描述

6、从容器中把配置文件复制出来。
通过 exit 命令退出容器终端,然后通过以下命令将下述文件复制出来:

docker cp gis-core-nginx:/etc/nginx/nginx.conf /home/nginx/nginx.conf 
docker cp gis-core-nginx:/etc/nginx/conf.d /home/nginx/ 
docker cp gis-core-nginx:/usr/share/nginx/html /home/nginx/ #网站目录

在这里插入图片描述

7、删除刚才启动的容器。

 docker ps
 docker ps -a #查看所有容器
 
 docker stop gis-core-nginx # gis-core-nginx 容器| 容器ID 也可以,只需要前3位数字即可
 docker rm gis-core-nginx
 docker rm -f gis-core-nginx #直接删除正在运行的容器

在这里插入图片描述

8、启动一个带有挂载目录的容器。

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

在这里插入图片描述

通过命令 curl localhost:80 测试:

在这里插入图片描述
在这里插入图片描述

总结

通过上述步骤,我们完成了 Docker 安装 Nginx,后续如果想在 Nginx 部署项目的话,直接将项目代码拷贝到服务器的挂载目录 /home/nginx/html 目录下即可。
如果后续修改了 Nginx 的配置文件,记得通过命令 docker restart gis-core-nginx 重启容器。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐