【Docker】Docker容器挂载单个文件,符号链接单个文件

目录

前言

我们知道Docker通常使用数据卷挂载来持久化一些配置或者数据。

但是数据卷的挂载都是整个目录。宿主机目录映射容器内目录。

但是有些情况下,我只想将宿主机的某个配置文件映射到容器内的某个配置文件。也就是挂载单个文件,这种情况该如何实现呢?

接下来以nginx为例

应用场景

sh 复制代码
# 启动容器
docker run -d --name nginx -p 80:80 nginx:1.25.4
# 进入容器
docker exec -it nginx bash
# 查看目录
root@df73a15d4099:/# ls -l /etc/nginx/
total 28
drwxr-xr-x 2 root root 4096 Feb 22 01:52 conf.d
-rw-r--r-- 1 root root 1007 Feb 14 16:03 fastcgi_params
-rw-r--r-- 1 root root 5349 Feb 14 16:03 mime.types
lrwxrwxrwx 1 root root   22 Feb 14 16:13 modules -> /usr/lib/nginx/modules
-rw-r--r-- 0 root root  676 Feb 22 02:49 nginx.conf
-rw-r--r-- 1 root root  636 Feb 14 16:03 scgi_params
-rw-r--r-- 1 root root  664 Feb 14 16:03 uwsgi_params

一般的nginx部署都使用数据卷映射 /etc/nginx/conf.d 这个目录,默认的nginx.conf会导入所有conf.d目录下的.conf结尾的配置。但是有的使用对于服务器的基限要求,默认的nginx.conf配置并不符合要求,也需要进行修改。既然要修改那么肯定是需要映射出来进行持久化存储的。按照数据卷的方式就需要将整个/etc/nginx目录映射出来。但我现在只想映射nginx.conf因为其他的配置并不做修改。

实现方式

使用--mount type=bind 来实现单个文件绑定也就是符号链接。
source是宿主机的文件,target是容器内文件

sh 复制代码
docker run \  
  --name nginx \  
  --restart=always \  
  -p 80:80 \  
  -v /opt/docker_nginx/conf.d/:/etc/nginx/conf.d \ 
  --mount type=bind,source=/opt/docker_nginx/nginx.conf,target=/etc/nginx/nginx.conf 
  nginx:1.25.4

缺点

经过测试发现 这种方式链接的单文件 宿主机更新无法实时同步到容器内部,需要docker restart nginx重启容器。

相关推荐
时间售卖铺11 分钟前
MySQL 表的约束
运维·数据库·mysql·云原生
广州工博科技25 分钟前
SAP Joule for Consultants 如何为自动化与集成项目提供支持?
运维·自动化
铁弹神侯28 分钟前
Docker 入门
docker
Acrellea33 分钟前
数据中心这台新变压器,让配电房的电表全失效了
运维·能源
boy快快长大43 分钟前
【Jenkins】入门学习
运维·学习·jenkins
叼烟扛炮1 小时前
Linux 学习笔记(九):自动化构建神器 Make 与 Makefile
linux·运维·服务器
lisanmengmeng1 小时前
监控Kubernetes集群的GPU资源(三)
linux·容器·kubernetes
北塔软件1 小时前
从根因分析到协同执行,如何让AI运维真正落地?
运维·人工智能
码农1001号1 小时前
emqx5.8开源版WSS连接
运维·服务器
海宇AI1 小时前
零信任架构实战:基于海宇车辆车五项信息核验构建自动化汽配供应链车型分类与发动机型号适配网关
运维·人工智能·架构·自动化