今天在这里讲如何在docker上运行nignx镜像,并将配置文件和目录挂载到宿主机上,以实现方便统一的管理配置信息。
首先第一步需要拉取镜像,我们还是拉取最新的镜像,不需要添加tag版本号,
拉取结束后用docker images 查看是否拉取成功,如图中可以看到nginx的镜像了。
拉取成功后需要创建文件和文件夹用于运行的时候挂载,
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 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的所有步骤了,如果要配置ssl的话,需要先去域名申请证书,再配置到配置文件中,docker的操作步骤不影响。不过以上要注意几个问题
- 容器的端口要映射出来才可以访问,如果是在阿里云服务器上,还需要把阿里云的对应的端口开通
- 如果部署的是前端系统,需要把前端文件放到挂载的文件夹中,且nginx配置的访问路径是容器中对应的路径,不要配置成宿主机中的路径,否则会访问不到的
好了,以上如果有问题可以在评论区给我留言