挂载volume的行为

volume的挂载是 以宿主机为主 ,主要有如下几个行为可能:

host container mount result
文件夹不存在/文件夹存在但为空 文件夹不存在/存在但为空/存在且不为空 container中文件被覆盖(清空)
文件夹存在且不为空 文件夹不存在/存在但为空/存在且不为空 container中文件夹内容被覆盖(原内容清空, 覆盖为host上文件夹内容)

将容器已经存在的文件挂载到宿主机

由上面可知,容器中原本存在的文件一旦进过挂载,就一定会被宿主机覆盖,但是有如下几个方法,可以曲线救国:

  • docker cp命令先将容器内的数据copy到宿主机然后再进行挂载
  • docker-entrypoint.sh等脚本中执行创建文件和文件夹等相关命令,因为挂载行为先于脚本的执行行为,所以在脚本执行的时候已经挂载volume,当脚本创建相关文件的时候就可以反映到宿主机上了

volume相关命令

docker volume ls #查看所有命名和匿名volume
docker inspect <volume-name> #查看volume相关信息docker volume create <volume-name> #创建volume
docker volume rm <volume-name> #删除docker volume preun #清空没有容器挂载中的volume stop中的容器的volume不会清空#控制volume的读写权限
-v <xxx>:容器内路径:ro #只读 在容器内只能读挂载的文件
-v <xxx>:容器内路径:rw  #读写 在容器内能读写挂载文件 默认

共享数据卷

一个容器可以共享其它容器已经挂载了的数据卷,一旦共享那么只要在任意一个容器里面操作数据卷都相当于操作同一个,会影响所有容器和宿主机上的文件。并且容器删除并不会删除数据卷

docker run --name b1 -v $PWD:/v1  -it busybox:1.32.0 sh
docker run --name b2 --volumes-from b1  -it busybox:1.32.0 sh

volume权限问题

TODO

volume规则总结

  • 应该避免挂载一个空的或未创建的目录,这样可能会清空容器中原来存在的文件

  • 如果挂载一个没有创建的文件,则docker会自动创建

  • docker挂载路径容器和宿主机不支持 相对路径 ,都必须指定 绝对路径

Docker的volumes踩坑相关推荐

  1. 阿里云天池【Docker练习场】踩坑指南

    阿里云天池[Docker练习场]踩坑指南 题目直达 提交环境搭建(基于macOS) Docker的安装与基本功能使用 Docker安装过程遇到的小问题 提交结果注意事项 提交时的镜像配置 项目结构规范 ...

  2. 前端小白的 docker 配置nginx踩坑之旅

    //查看系统版本 lsb_release -a//输出 LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Desc ...

  3. Docker for windows挂载文件到Nginx目录踩坑小记

    前言:因为最近在学Docker,通过菜鸟教程的文档,在学到Docker安装Nginx时,挂载目录运行容器时碰到了错误,一直跑不起来,浪费了很多时间,这里记录中途的解决方法 相关教程: 菜鸟教程 这是菜 ...

  4. 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...

    手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend 2020-06-16 13:29:47 15点赞 63收藏 4评论 创作立场声明:老白的踩坑记录 嗨,大家 ...

  5. AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史

    AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史 发布场景:windows上虚拟机 CentOS(7.8)环境 创建AspNetCore3.1 项目,加入Docker支持 首 ...

  6. windows系统安装docker版本davinci达芬奇踩坑指南

    本文讲解windows系统如何安装docker版开源软件davinci(数据可视化web服务),并指出一系列的踩坑指南. 达芬奇github地址   https://github.com/edp963 ...

  7. docker内网部署gitlab步骤及gitblit迁移gitlab踩坑gitlab备份nas

    docker内网部署gitlab步骤及gitblit迁移gitlab踩坑 1.部署情况 2.部署步骤 1.将gitlab docker镜像gitlab.tar拷贝到服务器中并加载 2.运行镜像 3.配 ...

  8. WSL下Docker使用踩坑小记

    众所周知,Win10中开始提供Linux子系统,即Windows Subsystem for Linux,简称WSL,它可以让我们在Windows系统使用Linux系统,自从有了这个新功能以后,博主果 ...

  9. 用户数从 0 到亿,我的 K8s 踩坑血泪史

    作者 | 平名 阿里服务端开发技术专家 导读:容器服务 Kubernetes 是目前炙手可热的云原生基础设施,作者过去一年上线了一个用户数极速增长的应用:该应用一个月内日活用户从零至四千万,用户数从零 ...

最新文章

  1. shell下输出字体颜色
  2. windows下QtSDK/QTCreator安装
  3. 前端学习(3262):js高级教程(5)数据变量和内存
  4. 关于ElasticSearch处理过滤条件
  5. SqlServer数据组织结构
  6. 如何通过a/a中的href刷新当前界面
  7. 37、购物系统需求分析
  8. 微信小程序上传图片到阿里云存储
  9. r语言调用python_R语言与Python协同工作
  10. 各种SKYPE网页代码,SKYPE在线代码
  11. 【opencv-python】寻找矩形框
  12. 【易语言】微信跳一跳教程详细版,分分钟让新手学会的教程(附源码)
  13. 移动端H5页面在ios设备上软键盘顶起页面后隐藏,页面不回弹的解决方案
  14. 手机端android app崩溃的常见类型
  15. SQL-DAY 7(SQL查询语句的应用案例:汽车新销售)
  16. Django + vue 开发接口自动化可视化平台
  17. 如何引入iconfont字体图片和网页标题logo
  18. 什么是 95计费方式
  19. iOS 2015年3月苹果新的审核标准(中文)
  20. 基于javaweb的旅游管理系统(java+jsp+html5+bootstrap+servlet+mysql)

热门文章

  1. 10.2.2.7 -DHCP 和 DNS 服务
  2. 2021-07-23 N卡显示器亮度设置
  3. [汇编] 汇编语言实现简易文本编辑器(光标移动、上卷和退格删除)
  4. 蓝桥杯python基础练习
  5. 计算广告:第五章——搜索与竞价广告
  6. GPS定位基本原理浅析
  7. 4-1 Aruba Central 云管理解决方案
  8. hevc AMVP模式
  9. 美业SaaS的创业分享之[销售]:销售和销售管理
  10. 键盘 连击 测试软件测,87自学单片机第六十篇:按键双击和多击检测