首页 > 其他分享 >Docker数据卷

Docker数据卷

时间:2023-03-10 23:12:11浏览次数:42  
标签:容器 run -- 目录 挂载 Docker 数据 docker

Docker Data Volume

作用:用来实现容器中数据和宿主机中数据进行映射同步
注意:数据卷使用必须在容器首次启动时设置

数据卷的使用

设置数据卷在docker run时使用-v选项,多个数据卷挂载使用多个-v选项

一、使用绝对路径设置数据卷

# 语法
docker run -v 宿主机路径:容器内路径:权限 ...
# 注意:当本地路径目录存在且目录内有文件时,宿主机的该目录会直接覆盖容器内目录内容,参考示例3。如不想被覆盖,应该指定空目录挂载。

# 示例,将本地的/test目录挂载到容器的/test目录,宿主机和容器中原本没有/test目录都会被直接创建,权限可缺省,默认rw(可读写)
docker run -tid --name v-centos -v /test:/test centos:7

# 示例2,创建容器时指定ro权限,则容器内针对该目录只读,不可写,只能在宿主机上修改该目录内的文件
docker run -tid --name v-centos2 -v /test:/test:ro centos:7

# 示例3,容器内该目录存在,则就是将本地/apps目录内容挂载(覆盖)到容器内的webapps/,不会在容器内创建apps目录
docker run -tid --name test—tomcat -v /root/apps/:/usr/local/tomcat/webapps/ tomcat:8.0

# 示例4,除了目录,还可以挂载文件,如下将history的历史记录文件挂载到容器中了
docker run -it -v $HOME/.bash_history:/root/.bash_history centos:7 /bin/sh

二、使用别名方式设置数据卷

# 语法,和使用绝对路径的方式一致,只是将宿主机绝对路径改为了别名,这个别名就是数据卷,不存在会被创建
# 注意:别名不能使用路径,如果使用路径那就是绝对路径的挂载方式了,本地不存在那个目录也会在该路径下直接创建一个
docker run -v 别名:容器内路径:权限 ...

# 示例
docker run -d -p 8083:8080 --name tomcat04 -v aaaa:/usr/local/tomcat/webapps tomcat:8.0

创建数据卷

docker run的时候直接指定不存在也会自动创建的。

docker volume create 数据卷名

查看所有数据卷名称(绝对路径挂载的不在其中)

docker volume ls

查看指定数据卷具体信息

docker inspect 数据卷名

删除数据卷

docker volume rm my-vol

清空所有无主(未被挂载)的数据卷

docker volume prune

三、数据卷的存储位置(别名方式)

默认是在 /var/lib/docker/volumes 下,我在 /etc/docker/daemon.json 中修改了数据目录,所以是在 /data/volumes/ 下。
如 docker volume create my-vol 命令创建一个数据卷,会在/data/volumes/下创建一个 my-vol 目录,其中又会有一个 _data 目录,这个目录实际上才是容器内挂载目录的真实数据,所以使用数据卷的方式挂载不会覆盖容器中目录的内容,除非这个数据卷已经被修改过数据了又被二次挂载到了其它的容器上。

--mount标记

--mount参数用作挂载本地目录到容器(可直接被-v参数替代,作用类似于-v参数的第一种方式)。
--mount 参数时如果本地目录不存在,Docker 会报错,而使用 -v 参数时如果本地目录不存在 Docker 会自动创建一个文件夹。

# 示例
$ docker run -d -P \
    --name web \
    # -v /src/webapp:/usr/share/nginx/html \
    --mount type=bind,source=/src/webapp,target=/usr/share/nginx/html \
    nginx:alpine
    
# 使用--mount挂载时指定权限
$ docker run -d -P \
    --name web \
    # -v /src/webapp:/usr/share/nginx/html:ro \
    --mount type=bind,source=/src/webapp,target=/usr/share/nginx/html,readonly \
    nginx:alpine

标签:容器,run,--,目录,挂载,Docker,数据,docker
From: https://www.cnblogs.com/tandabao/p/17204944.html

相关文章

  • MOOC数据结构
    mooc摘记第一讲1.捕捉程序的运行时间2.解决问题方法的效率与①数据的组织方式②空间的利用效率③算法的巧妙程度第二讲PTA练习摘记01-复杂度1最大子列和问题最......
  • Docker常用命令
    docker从入门到实践参考文档https://docker-practice.github.io/zh-cn/dockr练习网站https://labs.play-with-docker.com/查看docker版本dockerversion或docker-v......
  • python爬虫获取国家统计局区划代码和城乡划分代码添加到数据库
    importpymysqlfrombs4importBeautifulSoupimportrequestsimporttimefromlxmlimportetreedefget_area(year):year=str(year)url="http://ww......
  • 指标数据的规范化处理
    在_多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中......
  • docker安装MySQL
    docker安装MySQL1、先安装docker略过。2、准备工作先准备配置目录和持久化目录,举个栗子:mkdir-p/opt/mysql/{conf,data}准备配置文件*.cnf,放到/opt/mysql/conf目......
  • m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据
    1.算法描述       在人工神经网络的发展历史上,感知机(MultilayerPerceptron,MLP)网络曾对人工神经网络的发展发挥了极大的作用,也被认为是一种真正能够使用的人工神......
  • C语言之数据的存储(一)(整型数据)
    一、整型数据在内存中的存储1.1整型数据家族char,short,intlong(每种类型又分为unsigned和signed,例如,signedchar,unsignedchar)1.2整型数据的存储对于整型数据,其在计......
  • Qz学算法-数据结构篇(排序算法--插入、希尔)
    插入排序1.基本介绍插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。2.基本思想插入排序(InsertionSorting).的基本思想是......
  • Docker容器共享磁盘
    需求:.NET程序需要监控一个FTP上的文件变化并进行操作,在linux上使用原生目录时,不管怎么切换后台运行,总是会在一段时间运行后死掉。方案:远程也不好debug,想了一下,干脆直接使......
  • 数据库内核:VScode远程调试
    准备虚拟机这里我使用Docker的Ubuntu的镜像去创建容器。下载Ubuntu镜像dockerpullubuntu:20.04创建子网创建容器时需要设置固定IP,所以先要在docker中......