docker可道云怎么挂载移动硬盘_数据卷的挂载

#### 命令挂载

语法:docker run –it –v /宿主机绝对路径目录:/容器内目录\[:权限\] 镜像名或镜像ID

![](https://img.kancloud.cn/de/11/de11ac1afa4ad4a86bf53a9be2047776_804x45.png)

可通过docker inspect 镜像名称或镜像ID查看镜像的详细信息

![](https://img.kancloud.cn/98/d8/98d89ec6ee3abf617d53c379f1f2915d_663x193.png)

容器和宿主机之间可以进行数据的共享

![](https://img.kancloud.cn/47/8e/478ef5c3a696c7da478bdf6587c7ae79_731x81.png)

比如说将上面的内容写入到/hostDataVolume中以后,我们在容器内也可以看到该文件

![](https://img.kancloud.cn/fc/f8/fcf8aab63e4e7d58340e7cd0d13ea67d_774x120.png)

此时我们查看容器内的/dataVolumeContainer目录,发现存在一个hostText的文件,并且文件内容是我上面通过重定向>写入的。

![](https://img.kancloud.cn/e8/ab/e8ab7550f6e69e0e1d8a395dd1142e8d_897x181.png)

我们在容器内向hostText文件追加了一个文本内容,此时通过宿主机查看hostText文件,发现也能看到该文本内容。(因为服务器不支持中文的原因,造成的部分字符乱码)

![](https://img.kancloud.cn/99/e7/99e748b61387519968bf2f14d3bd6b13_518x85.png)

此时说明**通过数据卷,可以实现宿主机和容器间的数据保存**

当容器停止退出后,如果宿主机的卷挂载目录文件有变动,重新启动容器后,容器内的卷挂载目录会和宿主机卷挂载目录的文件内容自动同步。

##### 带权限的挂载

![](https://img.kancloud.cn/07/e7/07e79cac2a2bfecbf97878381abcf317_758x44.png)

ro:Read-Only,中文意思就是只读

rw:Read,Write,可读可写

![](https://img.kancloud.cn/5b/b6/5bb6b7a93d8f4396ad75e76ee6183cea_385x194.png)

此时容器内**只能进行读操作,不能进行修改和写入**

![](https://img.kancloud.cn/41/95/4195b221cb05761b8b331ef6153cd03c_662x60.png)

##### 解决方案:Docker挂载主机目录Docker访问出现cannot open directory:Permission denied(未验证)

在挂载目录后加一个—privileged=true参数

如:docker run –it –v /宿主机目录绝对路径:/容器目录绝对路径 **–privileged=true** 镜像ID或镜像名称

#### Dockerfile添加数据卷

1. 根目录下新建docker文件夹并进入

![](https://img.kancloud.cn/2b/9d/2b9d74ae0019bddb7313f707a24ee548_354x30.png)

1. 在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷

语法:

VOLUME\[“/dataVolumeContainer1”,”/dataVolumeContainer3”,”/dataVolumeContainer3”\]

说明:

出于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在Dockerfile中实现。

由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。

1. Dockerfile构建

\[root@izikh2x5epj8p6z docker\]# vi Dockerfile

\# 数据卷测试

\# 来自于哪个镜像

FROM centos

\# 数据卷名称1,数据卷名称2,...

VOLUME \["/dataVolumeContainer1","/dataVolumeContainer2"\]

\# 输出回显信息

CMD echo "finished,------>success"

\# 相当于 docker run -it -v /宿主机目录1:/dataVolumeContainer1 -v /宿主机目录2:/dataVolumeContainer2 centos /bin/bash

CMD /bin/bash

1. docker build构建Dockerfile文件,生成新镜像

语法:docker build –f Dockerfile文件位置 –t 新镜像名称 新镜像生成位置

![](https://img.kancloud.cn/4d/38/4d3834d3a53ed9954b48e42c8400837c_886x373.png)

通过docker images查询本地镜像信息,发现多了一个我们生成的gotojava/centos的镜像

![](https://img.kancloud.cn/c1/70/c17005892d62d0bbad47096ee36461f3_796x122.png)

1. Run我们已经生成的镜像

![](https://img.kancloud.cn/bb/25/bb25565e63a3787ed38f03f832e4606c_568x40.png)

查看镜像根目录,发现有两个数据卷1和数据卷2

![](https://img.kancloud.cn/7c/e0/7ce06c988c95c059639af0fe7302c0ef_819x85.png)

1. 查看数据源对应的主机位置

可以使用docker inspect 容器ID或容器名称查看容器中的数据卷和宿主机上对应的目录位置

![](https://img.kancloud.cn/68/1a/681a16c29b9bd9222736c94539b4184f_1096x415.png)

CentOS7下的默认地址为:

/var/lib/docker/volumes/bf72aebc25e62d53e54121d162085a663e78ffc9e188d58ee567c4f5edf7dc4f/\_data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值