首页 > 解决方案 > 是否可以将 Docker 中的卷视为设备?

问题描述

我有一个在生产中使用的脚本,它基本上可以做到这一点:

make.ext4 ... /dev/sdb1
mount /dev/sdb1 /folder
and so on

我有一个 Docker 环境,可以在其中模拟我的生产环境。现在,我需要的是可以在两个环境中使用相同的脚本。为此,我需要在 Docker 中拥有一个 /dev/sdb1 设备并以某种方式在其上附加一个卷,这样当我运行上面的命令时,我的卷就会附加到 /folder。

我知道这可以通过以下方式轻松完成:

docker run -t <tag> -v <my volume>:/folder -it /bin/bash

但是通过这种方式,Docker 容器中的情况有些不同,我需要修改我的脚本(在我的情况下,我有几个脚本要更改)。

有没有办法做类似的事情:

docker run -t <tag> -v <my volume>:/dev/sdb1 -it /bin/bash

这样当我在 Docker 中时:

mount /dev/sdb1 /folder

我将外部卷挂载到容器中的 / 文件夹?

标签: dockerdockerfilemountdocker-volume

解决方案


您是否尝试过以挂载权限运行 docker?

也许如果您启动docker run --privilegedor docker run --cap-add=SYS_ADMIN,您可以从 docker 访问 /dev/sdb1,所以,可以这样做mount /dev/sdb1/

有关 docker 容器权限的更多信息,请参阅:Docker 文档特权模式和功能


推荐阅读