使用docker启动nginx容器修改配置,网页和获取日志啥的很不方便,一般都是docker exec -it 容器id 进去修改,支持直接修改的还好,但有些简洁的容器里面还不允许操作,需要一个一个docker cp出来,相当麻烦。
本文实现配置config,网页html和日志log挂载到宿主机。
1:创建对应配置conf,网页html和日志log的volume
docker volume create NginxConfig #配置信息
docker volume create NginxHtml #网站信息
docker volume create NginxLog #日志信息
2:创建nginx容器
docker run -d -it -p 8088:80 --name=nginx -v NginxHtml:/usr/share/nginx/html -v NginxConfig:/etc/nginx -v NginxLog:/var/log/nginx nginx
解释:
-d
:表示以后台模式运行容器。-it
:表示分配一个伪终端并保持STDIN打开。-p 8088:80
:将主机的8088端口映射到容器的80端口,这样可以通过主机的8088端口访问Nginx服务。--name=nginx
:为容器指定一个名称为nginx。-v NginxHtml:/usr/share/nginx/html
:将NginxHtml卷挂载到容器的/usr/share/nginx/html
目录,用于存储Nginx的静态网页文件。-v NginxConfig:/etc/nginx
:将NginxConfig卷挂载到容器的/etc/nginx
目录,用于存储Nginx的配置文件。-v NginxLog:/var/log/nginx
:将NginxLog卷挂载到容器的/var/log/nginx
目录,用于存储Nginx的日志文件。nginx
:指定要运行的镜像名称为nginx
3:查看对应配置conf,网页html和日志log的volume
3.1:查看配置conf的volume:
docker volume inspect NginxConfig
输出为:
3.2:查看配置的网页html的volume:
docker volume inspect NginxHtml
输出为:
3.3:查看配置的日志log的volume
docker volume inspect NginxHLog
输出为:
卷解释如下:
- Driver: 表示使用的驱动程序,这里是"local",表示使用本地驱动程序。
- Labels: 标签,用于对卷进行分类或标记。
- Mountpoint: 挂载点,表示卷在主机上的挂载路径。
- Name: 卷的名称。
- Options: 选项,用于配置卷的一些参数。
- Scope: 作用域,表示卷的作用范围,这里是"local",表示只在本地可见
4:修改配置文件
用配置confi举例:
cd /var/lib/docker/volumes/myNginxConfig/_data/conf.d #进入挂载的conf目录
vim default.conf #修改配置文件
在文件里随便加点内容后面验证和容器内部是否同步
5:查看容器中default.conf配置文件验证修改
docker exec -it f10 bash #进入容器内部(f10是刚刚创建的nginx容器id前三位)
cat /etc/nginx/conf.d/default.conf #查看容器内部的nginx配置文件
容容器内部的配置文件已经通过宿主机挂载的文件修改成功
在宿主机挂载的文件修改后,直接在宿主机重启服务即可
docker exec -i [nginx容器名/id] nginx -s reload