当前位置: 首页 > news >正文

Docker学习日志-Docker容器配置、Nginx 配置与文件映射

Docker学习日志-Docker容器配置、Nginx 配置与文件映射

docker run 之后能否再次修改卷映射或端口映射?

不能直接修改已创建容器的卷映射或端口映射。
Docker 的设计原则是 **容器是不可变的 **,也就是说:
一旦容器通过 docker run 创建完成,它的配置(如卷映射、端口映射、网络等)不能直接修改。如果你需要更改这些配置,有以下几种方法:

方法一:删除容器并重新创建

my-nginx是容器名

docker stop my-nginx
docker rm my-nginx
重新运行并添加卷映射和端口映射
docker run -d --name my-nginx \-p 8080:80 \-v D:/dockerFils/nginx/nginx_html:/usr/share/nginx/html \nginx

方法二:使用 Docker Compose 管理配置

由于docker的设计原则是“容器是不可变的”,所以Docker Compose不是修改现有容器,而是先删除旧容器,再根据新的 compose 文件新建一个配置更新后的容器。
创建一个 示例: docker-compose.yml 文件:

version: '3'
services:nginx:image: nginxports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmlcontainer_name: my-nginx

然后使用启动:

docker-compose up -d

修改配置后并启动:

version: '4'
services:nginx:image: nginxports:- "8080:80"volumes:- D:/dockerFils/nginx/nginx_html:/usr/share/nginx/htmlcontainer_name: my-nginx
docker-compose down
docker-compose up -d

nginx配置文件

  1. Nginx 容器内的核心配置文件
    • /etc/nginx/nginx.conf (主配置文件)
      • 作用: 定义 Nginx 的全局设置。
      • 包含内容示例: 工作进程数、错误日志路径、事件模型、HTTP 模块的全局设置(如 MIME 类型、默认日志格式、连接超时)、包含其他配置文件的指令(如 include /etc/nginx/conf.d/*.conf;)。
    • /etc/nginx/conf.d/ 目录下的 *.conf 文件 (站点配置文件 / 虚拟主机配置)
      • 作用: 定义具体的网站(虚拟主机)的行为。每个文件通常对应一个域名(站点)。
      • 核心结构: 基于 server { ... } 块进行配置。
      • 配置项示例:
        • listen: 监听的端口(如 80)。
        • server_name: 绑定的域名(如 www.example.com, blog.example.com)。一个物理服务器可以通过配置多个 server 块绑定多个域名(虚拟主机)
        • location: 定义如何处理特定请求路径的规则。
        • root: 指定该站点网页文件的根目录。
        • index: 指定默认索引文件。
        • try_files: 尝试查找文件的顺序。
        • proxy_pass: 配置反向代理(常见于应用后端)。
    • 网页文件默认目录: /usr/share/nginx/html
/etc/nginx/
├── nginx.conf
└── conf.d/├── default.conf         # 站点1:www.example.com├── blog.example.com.conf # 站点2:blog.example.com└── api.example.com.conf  # 站点3:api.example.com

示例的站点配置,只有server块

server {listen 80;server_name blog.example.com;location / {root /data/blog;index index.html;try_files $uri $uri/ =404;}
}

在这里插入图片描述

在这里插入图片描述

自定义运行 Nginx 容器的文件映射

在docker中使用卷映射会让容器中的配置消失,所需要先拷贝出容器中的配置文件然后再进行卷映射。

文件复制

# 创建临时的nginx用于复制文件
docker run -d --name temp-nginx -p 8080:80 nginx# 复制主配置文件到本地:
docker cp temp-nginx:/etc/nginx/nginx.conf D:/dockerFils/nginx/nginx_mainConf# 复制站点配置文件:
docker cp temp-nginx:/etc/nginx/conf.d/default.conf D:/dockerFils/nginx/nginx_defaultConf#复制网页文件目录:
docker cp temp-nginx:/usr/share/nginx/html D:/dockerFils/nginx/nginx_html# 停止临时容器:
docker stop temp-nginx # 删除临时容器
docker rm temp-nginx

进行卷映射

只替换主配置文件 + 自定义网页内容。
docker run -d --name my-nginx \-p 8080:80 \-v D:/dockerFils/nginx/nginx_mainConf:/etc/nginx/nginx.conf \-v D:/dockerFils/nginx/nginx_html:/usr/share/nginx/html \nginx
映射 default.conf(站点配置) + html(网页文件)
docker run -d --name my-nginx \-p 8080:80 \-v D:/dockerFils/nginx/nginx_defaultConf:/etc/nginx/conf.d/default.conf \-v D:/dockerFils/nginx/nginx_html:/usr/share/nginx/html \nginx
映射 nginx.conf + default.conf + html
docker run -d --name my-nginx \-p 8080:80 \-v D:/dockerFils/nginx/nginx_mainConf:/etc/nginx/nginx.conf \-v D:/dockerFils/nginx/nginx_defaultConf:/etc/nginx/conf.d/default.conf \-v D:/dockerFils/nginx/nginx_html:/usr/share/nginx/html \nginx

如果你挂载的是文件(如 nginx.conf、default.conf),那么容器中的对应文件会被你的本地文件完全替换。
如果你挂载的是目录(如 html),那么整个目录内容都会被替换。
如果你挂载了卷(volume),即使容器被删除并重建,只要你不删除卷本身,数据仍然是安全的。

切换到docker中的nginx文件夹内查看
docker exec -it my-nginx /bin/bash

my-nginx 为 容器名称,执行命令的shell: /bin/bash

http://www.dtcms.com/a/299801.html

相关文章:

  • Vim 进阶教程
  • React入门学习——指北指南(第四节)
  • Spring核心:Bean生命周期、外部化配置与组件扫描深度解析
  • 龙迅#LT8711UXD适用于Type-C/DP1.4 /EDP转 HDMI2.0 功能,分辨率高达4K60HZ,可支持HDCP!
  • 01 01 02 第一部分 C++编程知识 C++入门 第一个C++程序
  • 其他世界的自来水
  • 【图像理解进阶】如何在自己的数据集上释放segment anything模型方案的潜力?
  • 20250726-3-Kubernetes 网络-Service三种常用类型_笔记
  • 服务器被网络攻击后该如何进行处理?
  • “累”这一身体某部位的感觉可能较多来源于对局部血流阻力的感知
  • 教育培训系统源码解析:如何打造高可扩展的在线学习平台?
  • 疏老师-python训练营-Day26函数专题1:函数定义与参数
  • Dify开发教程笔记(一): 文件及系统参数变量说明及使用
  • 【n8n教程笔记——工作流Workflow】文本课程(第一阶段)——5.3 过滤订单 (Filtering orders)
  • 【Canvas与壁纸】蓝底白四方块花电脑壁纸1920x1080
  • 大模型——字节Coze重磅开源!Dify何去何从
  • Web后端进阶:springboot原理(面试多问)
  • Android Fragment 全解析
  • 【机器学习深度学习】微调能改变模型“智商”吗?——模型能力与知识的本质解析
  • (LeetCode 面试经典 150 题) 452. 用最少数量的箭引爆气球 (排序+贪心)
  • HCLP--MGER综合实验
  • ros2 中python 的多种调试方式
  • 《计算机组成原理与汇编语言程序设计》实验报告二 基本数字逻辑及汉字显示
  • 深入剖析 MetaGPT 中的提示词工程:WriteCode 动作的提示词设计
  • 深入React框架:构建现代前端应用的全面指南
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南
  • 2025 年 Java 就业主流技术栈
  • Java学习第七十七部分——JVM运行时数据区
  • 三防平板搭载2D扫描头:工业数据采集的革新利器
  • 路由选择工具——IP-Prefix