当前位置: 首页 > 面试题库 >

在Docker中将单个文件卷挂载为目录

都博裕
2023-03-14
问题内容

Docker文档指出,可以将单个文件装载到Docker容器中:

-v标志还可用于从主机挂载单个文件-而不是目录。

$ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

这会将您放入新容器中的bash外壳中,您将从主机获得bash历史记录,退出容器时,主机将具有在容器中键入命令的历史记录。

但是,当我尝试将文件挂载为目录时:

tom@u ~/project $ docker run --rm -it -v file.json:/file.json test
total 80K
drwxr-xr-x  9 root root 4.0K Dec  7 12:58 .
drwxr-xr-x 63 root root 4.0K Dec  7 12:58 ..
drwxr-xr-x  2 root root 4.0K Dec  4 16:10 file.json

我的Dockerfile看起来像这样:

FROM ubuntu:14.04
MAINTAINER Tom
CMD ["ls", "-lah", "/test"]

Docker版本为1.9.1,内部版本为a34a1d5。

这是文档问题,还是我的误解,或者还有其他情况吗?


问题答案:

test是您使用“ docker build -t test”而非/test文件夹构建的图像的名称。

尝试Dockerfile使用:

CMD ["ls", "-lah", "/"]
or
CMD ["cat", "/file.json"]

和:

docker run --rm -it -v $(pwd)/file.json:/file.json test

请注意使用$(pwd)以便以其完整的绝对路径挂载文件(不支持相对路径)



 类似资料:
  • 问题内容: 示例(为简便起见,省略了许多选项): 这是错误的,因为没有名称名称的卷,这意味着该卷名称必须是文件的完整路径(即,您不能在该卷名称后附加路径)? 尝试设置只会返回错误。 有没有办法将单个文件安装到容器中? 问题答案: 您不能在命名卷中装入文件或子目录,源是命名卷或主机路径。NFS本身,以及您将在Linux中挂载的大多数文件系统,都要求您挂载整个文件系统,而不是单个文件,当下降到inod

  • 问题内容: 我有一个正在进行dockerizing的开发环境,并且我希望能够实时重新加载所做的更改而不必重建docker映像。我使用docker compose是因为redis是我应用程序的依赖项之一,我喜欢能够链接redis容器 我在我的中定义了两个容器: 我已经到了我应用程序的dockerfile中添加卷的地步,但是如何将主机的目录挂载到卷中,以便对代码的所有实时编辑都可以反映在容器中? 这是

  • 问题内容: 我正在使用Docker,并且我想挂载一个变化很大的动态文件夹(因此我不必为每次执行都制作一个Docker映像,这会太昂贵),但是我希望该文件夹是只读的。将文件夹所有者更改为其他人可行。但是,需要访问权限,而我不希望将其公开给应用程序。 当我使用flag进行挂载时,它将提供我提供的任何用户名,我在docker映像内创建了一个非root用户,但是,该卷中的所有文件都以运行docker的用户

  • -v标志还可以用于从主机装入单个文件(而不仅仅是目录)。 这将使您进入一个新容器中的bash shell,您将获得来自主机的bash历史记录,当您退出容器时,主机将获得在容器中键入的命令的历史记录。 Docker版本为1.9.1,版本为A34A1D5。 这是一个文件问题,是我这边的一个误解,还是有其他的事情发生了?

  • 问题内容: 描述 我正在通过Hyper-V在Windows 10上使用Docker 1.12.5版本,并想在当前路径中将容器可执行文件用作命令。我构建了运行良好的Docker映像,但是挂载当前路径时遇到了问题。这个想法是创建一个别名并执行一个命令,以便可以在当前目录的系统范围内使用它。 设定 我有一个带文件夹“ test”的驱动器E,在其中有一个名为“ Windows主机上的文件夹”的文件夹,以显

  • 问题内容: 我最近创建了一个在Windows上的boot2docker上运行的mongodb docker实例。 不幸的是,在尝试kitematic的过程中,我意外地从mongo容器中删除了该卷,并且无法再访问我的数据。 mongo实例似乎创建了一个新卷,而旧卷现在仍悬空(孤立)并且未安装在任何容器中。 有什么办法可以恢复吗? 问题答案: 感谢您的答复,它使我处于正确的轨道,我设法使用以下命令启动