今天在这里讲如何在docker上运行nignx镜像,并将配置文件和目录挂载到宿主机上,以实现方便统一的管理配置信息。

首先第一步需要拉取镜像,我们还是拉取最新的镜像,不需要添加tag版本号,

docker pull nginx

拉取结束后用docker images 查看是否拉取成功,如图中可以看到nginx的镜像了。

docker

docker运行nginx镜像_docker

拉取成功后需要创建文件和文件夹用于运行的时候挂载,

mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/logs
mkdir -p /usr/local/nginx/html

下面需要先运行容器,方便把文件本来的内容拷贝出来,然后再将容器删除,因为自己手动创建的配置文件容易有语法错误,当然如果你有了争取的配置文件也可以直接使用,就不需要创建容器拷贝出来后再删除这个操作了。接下来几个步骤可以跳过:

# 1. 先用 nginx 镜像创建 nginx 容器,将需要挂载的文件拷贝出来
docker run --name nginx -d -p 80:80 nginx

# 2. 将容器中的 nginx.conf 文件拷贝到宿主机中
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf

# 3. 将容器中 conf.d 文件夹(包括里面的文件)拷贝到宿主机中
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf/conf.d

# 4. 将容器中的 html 文件夹拷贝到宿主机中
 docker cp nginx:/usr/share/nginx/html /usr/local/nginx/

# 5.删除正在运行的容器容器(-f 的参数作用是强制删除)
docker rm -f nginx

最终可以在宿主机中看到这些目录和文件夹,并且其中的html中包含了html文件,conf文件夹中包含了配置文件。

docker运行nginx镜像_nginx_02

全部准备好后,做最终的文件夹挂载,端口映射

# 要执行的命令

#运行启动命令,并将端口进行映射,文件进行挂载。
docker run -p 80:80 --name nginx -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -v /usr/local/nginx/logs:/var/log/nginx -v /usr/local/nginx/html:/usr/share/nginx/html -d --restart=always nginx:latest

#格式化后的代码
docker run -p 80:80 --name nginx \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-d \
--restart=always \
nginx:latest

# 1.--name是设置容器名
# 2.-p是容器与宿主机的端口映射
# 3.-v是做卷挂载,实质上就是文件的映射
# 4.-d是后台运行
# 5.--restart 是Docker提供重启策略控制容器退出时或Docker重启时是否自动启动该容器。,always表示docker重启后,这个容器会自动重启

执行完成后,在浏览器查看是否可以访问。

docker运行nginx镜像_nginx_03

以上就是docker运行nginx的所有步骤了,如果要配置ssl的话,需要先去域名申请证书,再配置到配置文件中,docker的操作步骤不影响。不过以上要注意几个问题

  • 容器的端口要映射出来才可以访问,如果是在阿里云服务器上,还需要把阿里云的对应的端口开通
  • 如果部署的是前端系统,需要把前端文件放到挂载的文件夹中,且nginx配置的访问路径是容器中对应的路径,不要配置成宿主机中的路径,否则会访问不到的

好了,以上如果有问题可以在评论区给我留言