【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重启容器。

相关推荐
一直都在5726 小时前
nginx和docker面试题
nginx·docker·github
芒果披萨7 小时前
Linux文件类基础命令行1
linux·运维·服务器
杨云龙UP8 小时前
ODA服务器RAC节点2/u01分区在线扩容操作记录及后续处理流程(Linux LVM + ext4 文件系统在线扩容操作手册)_20260307
linux·运维·服务器·数据库·ubuntu·centos
欲买桂花同载酒58215 小时前
程序人生-Hello’s P2P
运维·服务器·数据库
NineData15 小时前
AI时代的数据对比:DBA还需要盯着屏幕看差异吗?
运维·数据库
jyfool16 小时前
Ubuntu 远程桌面配置踩坑实录:从 TightVNC 到 x11vnc 的折腾之旅
linux·运维·ubuntu
网硕互联的小客服16 小时前
服务器防火墙是如何区分正常流量和攻击流量?
运维·服务器·网络
安当加密16 小时前
基于 RADIUS 的 Linux 服务器双因子认证:从 FreeRADIUS 到轻量级 ASP 方案的演进
linux·运维·服务器
ai产品老杨17 小时前
打破异构算力壁垒:基于GB28181/RTSP与Docker容器化的企业级AI视频平台架构解析(附源码交付方案)
人工智能·docker·音视频
A-刘晨阳17 小时前
【Prometheus】Alertmanager配置钉钉告警
运维·云原生·钉钉·prometheus·监控