首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卷设备映射在Docker上的工作方式

卷设备映射在Docker上的工作方式
EN

Stack Overflow用户
提问于 2018-05-18 14:20:14
回答 1查看 1.1K关注 0票数 1

我创建了两个Docker卷:

代码语言:javascript
复制
docker volume create volume1
docker volume create volume2

然后,我使用以下命令创建了一个Docker容器:

代码语言:javascript
复制
docker create -it ... some options ... -v volume1:/var/vcap/store -v volume2:/var/vcap/store2 --privileged myimage /bin/bash

Docker容器正确地配置了ssh,因此当我在其中使用ssh时,我会正确地看到/var/vcap/store上挂载的卷。特别是,我认为:

代码语言:javascript
复制
/dev/sda1 on /var/vcap/store type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /var/vcap/store2 type ext4 (rw,relatime,data=ordered)

此外,我还看到设备/dev/sda1 1上的其他文件系统:

代码语言:javascript
复制
/dev/sda1 on /etc/resolv.conf type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /etc/hostname type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /etc/hosts type ext4 (rw,relatime,data=ordered)

这让我很困惑,因为我不清楚如何将相同的设备安装在不同的文件夹上,成为不同的文件系统。实际上,我验证了,如果我在Linux VM上创建了一个文件,在/var/vcap/store中承载了在Mac上的容器,我在文件夹下面看到了这个文件:

代码语言:javascript
复制
/var/lib/docker/volumes/volume1/_data 

创建的文件。如果我在Linux上/var/vcap.xml 2下创建它,我会看到它创建于

代码语言:javascript
复制
/var/lib/docker/volumes/volume2/_data

到目前一切尚好。我的问题是,我将容器作为特权创建,因为我希望挂载和卸载这些文件系统。卸载可以正常工作,但是如果我再次尝试挂载卷,我不知道使用哪个设备。如果我使用以下命令:

代码语言:javascript
复制
mount /dev/sda1 /var/vcap/store

我在这个文件夹下看到以下内容:

代码语言:javascript
复制
cni  containerd  docker  kubeadm  kubelet-plugins  log  lost+found  nfs  swap

我不知道它是从哪里来的。

问题如下:

  1. 当我在Docker上挂载卷时,它是如何映射到/dev/sda1 1设备上的?
  2. 如何为不同的文件系统使用相同的设备?
  3. 假设我在特权模式下使用Docker,那么应该使用哪个挂载命令来重新挂载先前卸载的文件系统?
EN

回答 1

Stack Overflow用户

发布于 2018-05-21 11:00:47

回答你的问题:

  1. 当我在Docker上挂载卷时,它是如何映射到/dev/sda1 1设备上的?

创建停靠卷时,停靠库将创建到的内部符号链接。如果/var/lib/docker/卷在/dev/sda1 1中挂载,则属于/dev/sda1 1的每个卷和已挂载的文件或dir都将显示在同一位置,因为它们实际上是符号链接。

  1. 如何为不同的文件系统使用相同的设备?

第一个答案也回答了这个问题:它是同一个文件系统,但内部符号链接不同。Docker进行“虚拟”挂载,因此,您只有一个真实的/dev/sda1 1,尽管它出现了几个。这就是为什么不能从容器卸载/dev/sda1 1的原因。只有一个“虚拟”码头卸载。

  1. 假设我在特权模式下使用Docker,那么应该使用哪个挂载命令来重新挂载先前卸载的文件系统?

docker rundocker-compose up完成的虚拟挂载不可能在容器内完成,因为卷将被引用到主机挂载点(/dev/sda1 1)。最后,我建议控制从发射容器的主机上安装和卸载。如果您需要从容器中挂载和卸载,请与当前/dev/sda1 1相比,请安装和卸载不同的安装点(例如samba dir、nfs存储等),以避免误解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50413405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档