千家信息网

Docker下nginx外挂文件的方法是什么

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Docker下nginx外挂文件的方法是什么"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Docker下nginx外挂文件的方法是什么"文章
千家信息网最后更新 2026年10月31日Docker下nginx外挂文件的方法是什么

这篇文章主要介绍"Docker下nginx外挂文件的方法是什么"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Docker下nginx外挂文件的方法是什么"文章能帮助大家解决问题。

外挂文件的目的:

  • 文件不受docker镜像文件的约束,可以修改,重启容器,可以使用更新后的文件,不会被镜像还原

  • 容器运行过程中记录的文件如日志等信息,可以被自动保存在外部存储上,不会由于容器重启而丢失

而运行容器有两种方式:

  • docker run命令

  • docker-compose命令

docker run命令方式,通过-v参数挂载外部主机目录到容器内的路径上,有多个挂载点,就通过多个-v参数指定,而且只能使用绝对路径;docker-compose命令则通过service的方式描述容易,准确的说一个服务下面可以包含多个容器,也是通过-v参数配置外部路径的挂载配置,好处是可以使用相对路径,当然是相对与docker-compose.yml文件的路径。还有一个好处是,docker-compose启动容器的命令比较简单。

假设镜像打包路径结构如下:

├── build.sh├── docker-compose.yml├── Dockerfile├── mynginx.conf├── nginx-vol│   ├── conf.d│   │   └── mynginx.conf│   ├── html│   │   └── index.html│   └── logs│       ├── access.log│       └── error.log└── run.sh

Dockerfile为构建镜像的配置文件,内容如下:

FROM nginxLABEL maintainer="xxx" email="" app="nginx test" version="v1.0"ENV WEBDIR="/data/web/html"RUN mkdir -p ${WEBDIR}EXPOSE 5180

以nginx为基础,指定新的数据文件路径为/data/web/html,暴露端口为5180。

通过以下命令编译新的镜像:

docker build -t nginx:test-v1 .

编译出来的镜像tag为test-v1,可以查看本地镜像:

docker imagesREPOSITORY   TAG       IMAGE ID       CREATED          SIZEnginx        test-v1   d2a0eaea3fac   56 minutes ago   141MBnginx        latest    605c77e624dd   9 days ago       141MB

可以看到TAG为test-v1的镜像是刚刚编译出来的新镜像。

创建nginx外挂卷nginx-vol以及相关的conf.d、logs、html文件夹,并把对应的内容放入各自对应的目录下。如html文件夹下的iindex.html内容如下:

                                        系统时间                        

其实就是显示当前时间的一个页面而已。

logs下面为空,目的是让容器运行时的日志写到外部存储,即使容器停止或镜像销毁,运行过的日志仍然可以保留。

conf.d下面为nginx个性化配置,内容如下:

server {    listen       5180;    #listen  [::]:5180;    server_name  localhost;    #access_log  /var/log/nginx/host.access.log  main;    location / {        root   /data/web/html;        index  index.html index.htm;    }    #error_page  404              /404.html;    # redirect server error pages to the static page /50x.html    #    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    # proxy the PHP scripts to Apache listening on 127.0.0.1:80    #location ~ \.php$ {    #    proxy_pass   http://127.0.0.1;    #}    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    #    root           html;    #    fastcgi_pass   127.0.0.1:9000;    #    fastcgi_index  index.php;    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    #    include        fastcgi_params;    # deny access to .htaccess files, if Apache's document root    # concurs with nginx's one    #location ~ /\.ht {    #    deny  all;}

其实也就是在nginx默认的default.conf基础上修改了端口和root路径,目的是说明nginx的配置文件也可以使用外部存储的,如果是自己的程序可以修改配置文件,那通过这样的方式,可以在容器运行过程中修改配置文件;修改的配置文件实际存储在外部存储上,因此不会随着容器的停止运行而消失,也不会恢复为镜像内部的文件。

docker run模式

为了方便,可以把运行命令写到shell脚本中,如run.sh,内容如下:

docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1

可以看到命令中有3个-v,分别对应不同的外部存储的挂载,映射到容器内的不同目录下。

-p(注意是小写)后面的端口分别为主机端口和容器端口,也就是主机的15180端口映射到容器的5180端口,这样容器所启动的nginx服务端口5180就可以通过访问主机的15180端口而被映射起来。

查看运行中的容器:

docker ps -aCONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                                 NAMEScf2275da5130   nginx:test-v1   "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp   nginx-v1

详细映射查看:

docker inspect nginx-v1

会显示完整的信息,其中"Mounts"部分可以看到完整的存储挂载映射情况。

直接看主机的nginx-vol/logs下面,可以看到容器中的nginx运行日志自动写到了外部主机的存储上。

ls -l nginx-vol/logs/total 12-rw-r--r-- 1 root root 1397 1月   8 15:08 access.log-rw-r--r-- 1 root root 4255 1月   8 15:59 error.log

停止容器:

docker stop nginx-v1

删除容器:

docker rm nginx-v1

docker-compose模式

安装docker-compose

apt-get install docker-compose     

编写docker-compose.yml文件

version: "3"services:        nginx:                container_name: mynginx                image: nginx:test-v1                ports:                        - 80:5180                volumes:                        - ./nginx-vol/html:/data/web/html                        - ./nginx-vol/logs:/var/log/nginx                        - ./nginx-vol/conf.d:/etc/nginx/conf.d                restart: always

container_name:指定容器名称

image:要使用的镜像以及对应的标签

ports:主机端口与容器端口映射

volumes:外部存储挂载映射

启动容器

docker-compose up -dCreating network "nginxtest_default" with the default driverCreating mynginx ...Creating mynginx ... done

查看容器

docker ps -aCONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                                           NAMES635e2999c825   nginx:test-v1   "/docker-entrypoint.…"   24 seconds ago   Up 22 seconds   80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp   mynginx

可以看到容器按照docker-compose.yml配置运行,端口、名称、挂载都正常。访问主机的80端口即可对应容器的5180服务。

停止容器

docker-compose downStopping mynginx ... doneRemoving mynginx ... doneRemoving network nginxtest_default

可以看到,使用docker-compose更简单。

关于"Docker下nginx外挂文件的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

容器 文件 端口 镜像 运行 存储 配置 主机 命令 路径 内容 外挂 方法 方式 日志 不同 参数 多个 目录 目的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 科技平台互联网 互联网科技公司发展 互联网 视角下的科技创新 互联网金融 科技创新 互联网公司会议桌创意科技软装饰 汉立互联网科技有限公司联系电话 移动互联网年度科技创新 速维有品互联网信息科技(苏州)有限公司 阿里互联网科技企业 朱啸虎曾投资哪些互联网科技企业 特约风豹互联网科技为什么扣费 南博望互联网科技有限公司 互联网金融科技名词解释 济南有互联网科技公司吗 中和天地互联网科技有限公司 山东星卡互联网科技有限公司官网 广州千川互联网科技有限公司 广州富喜互联网络科技 深圳互联网科技园地址 广州淘业互联网络科技 亿策互联网科技 深圳前海聚择互联网科技有限公司 科技互联网的估值 中国互联网有什么科技含量 彤创互联网科技有限公司 互联网科技接地气 万物互联网智能科技 美国五大互联网科技公司市值多少 现代互联网科技公司
0