加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker的数据卷与数据卷容器操作

发布时间:2020-12-16 03:16:31 所属栏目:安全 来源:网络整理
导读:一、数据卷 数据卷( Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount动作。 ? 数据卷可以提供很多有用的特性: ?数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便; ?对数据卷内的

一、数据卷

数据卷(Data Volumes)是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于Linux中的mount动作。

?

数据卷可以提供很多有用的特性:

?数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便;

?对数据卷内的数据修改后会马上生效,无论是容器内操作还是本地操作;

?对数据卷的更新不会影响镜像,解耦开应用和数据;

?卷会一直存在,直到没有容器使用,可以完全卸载掉它。

?

Docker提供了volume子命令来管理数据卷:

?create ?????创建一个数据卷

?inspect ????打印一个或多个数据卷的详细信息

??ls ?????????列出所有数据卷

?prune ??????删除所有未使用的数据卷

??rm ?????????删除一个或多个数据卷

?

1、创建数据卷

docker volume create www-data

创建一个名为www-data的数据卷

?

2、查看数据卷

docker volume ls

?

3、打印数据卷详细信息

docker volume inspect www-data

?其中,Mountpoint表示默认的宿主机的共享目录

?

4、启动一个容器挂载此数据卷

挂载动作分为两个:

?-v ?????? ????格式:-v ?src:dst

?--mount ????????格式:--mount type=' ',source=' ',destination=' ',?

--mount中type的类型有三种:

volume:普通数据卷,默认映射到/var/lib/docker/volume路径下; bind:绑定数据卷,映射到主机指定目录下; tmpfs:临时数据卷,只存于内存当中。

其实两种挂载后的作用是相同的,个人喜欢-v

?

(1)、“-v” 挂载法:

docker run -dit -P -v www-data:/usr/share/nginx/www:ro nginx:1.2.1 /bin/bash

ro的意思是只读,如果设定了只读权限,则容器内不可对此目录或目录内文件的内容进行修改,只能在宿主机中修改,但是如果标注是ro权限的话,默认则是rw可读可写。

在宿主机目录下创新新文件vfan:

容器内挂载目录下文件同步改变:

相反,容器中创建文件,或修改文件内容,也都会同步到宿主机相对应的文件中

?

(2)、--mount挂载法:

docker run -dit -P --mount type=bind,source=/root/docker,destination=//usr/share/nginx/www nginx:1.2.1 /bin/bash

?

?挂载成功后同样进行以上测试:

在宿主机目录下创建新文件vvvfan:

容器内挂载目录下文件同步改变:

?

5、删除数据卷

docker volume rm [数据卷名称]

?

6、删除所有没有占用的数据卷

docker volume prune

?

二、数据卷容器

挂载数据卷容器的命令为—volumes-from

?

1、创建数据卷容器datadb

docker run -it -v /dbdata --name datadb nginx /bin/bash

创建一个名为datadb的数据卷容器,数据卷挂载目录为/dbdata

?

2、创建容器并挂载此数据卷容器

docker run -it --volumes-from datadb --name db1 ubuntu /bin/bash

?创建一个名为db1的容器,并将名为datadb的数据卷容器挂载到此容器下

?

3、再创建一个容器挂载此数据卷容器

docker run -it --volumes-from datadb --name db2 ubuntu /bin/bash

?

4、创建测试文件

cd dbdata

touch ceshi1 ?ceshi2 ceshi3

在数据卷容器datadb的dbdata目录下创建ceshi文件

?

其他挂载此数据卷容器的目录也会同步更新

datadb容器:

?

db1:

?

db2:

?如果删除一个数据卷,必须在删除最后一个还挂载它的容器时,使用docker rm –v命令来指定同时删除关联的容器。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读