Docker解决Volume宿主机覆盖容器中文件问题(docker自定义卷宿主机挂载点)

1、使用场景

将容器中的文件挂载到宿主机上,便于修改,配置,而不需要重新发布容器。

通俗描述:Docker容器启动时 当使用宿主目录直接挂载容器目录时,会出现宿主目录覆盖容器目录的情况。在部署前端项目时,想将静态文件资源暴露宿主机,一开始直接使用宿主目录进行挂载,如下代码。

version: '3.9'

services:
  nginx:
    image: yxs970707/deploy-web-demo:1.0.0
    container_name: web
    restart: always
    ports:
      - 7777:80
    volumes:
      - /volumes/web/html:/usr/share/nginx/html

部署完毕后发现宿主目录直接将容器目录覆盖了,导致容器内目录被清空

2、解决方案

解决这个问题就是使用具名 Volume 。

version: '3.9'

volumes:
  web-html:
    name: web-html
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /volumes/web/html

services:
  nginx:
    image: yxs970707/deploy-web-demo:1.0.0
    container_name: web
    restart: always
    ports:
      - 7777:80
    volumes:
      - web-html:/usr/share/nginx/html

3、案例说明

version : '3.8'
volumes:
  nginx-web-html:
    name: nginx-web-html
    driver: local
    driver_opts:
      o: bind
      type: none
      device: D:/dockerFile/home/zzzhcj/nginx/www
services:
  zzzhcj-nginx-web:
    container_name: zzzhcj-nginx-web
    image: registry.cn-hangzhou.aliyuncs.com/jinhu-zzzhcj/zzzhcj-nginx-web:latest
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - nginx-web-html:/home/zzzhcj/www #网站UI,需要以具名的方式挂载,才不会被覆盖
      - D:/dockerFile/home/zzzhcj/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件目录
      - D:/dockerFile/home/zzzhcj/nginx/logs:/var/log/nginx #日志
      - D:/dockerFile/home/zzzhcj/nginx/conf.d:/etc/nginx/conf.d #配置
#      - /home/zzzhcj/nginx/www:/home/zzzhcj/www #网站UI
#      - /home/zzzhcj/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件目录
#      - /home/zzzhcj/nginx/logs:/var/log/nginx #日志
#      - /home/zzzhcj/nginx/conf.d:/etc/nginx/conf.d #配置

    ports:
      - "80:80"
    networks:
      - zzzhcjlocalhost
networks:
  zzzhcjlocalhost:

4、结果验证

查看是否映射成功

 docker volume inspect nginx-web-html

5、【特别注意坑】

如果操作失当,未能成功挂载到自己定义的路径下,容器默认会在如下路径映射

/var/lib/docker/volumes/nginx-web-html/_data

当删除容器的时候,一定要将对应卷删除,或者直接进入以上路径,直接清除,要不然下次重启容器,旧的文件没有覆盖,导致运行的还是老程序!!!!!

6、参考

docker volume自定义挂载点 |

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青苔猿猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值