当前位置: 首页 > 知识库问答 >
问题:

VS Code Dev Container docker将挂载文件组成为目录?

郎羽
2023-03-14

我正在设置一个使用docker compose的vscode dev容器。我需要初始化mongo中的副本集,该副本集使用需要bash脚本的第二个安装容器。

我的目录结构是:

.devcontainer
  scripts
    mongosetup.sh

然后,我将脚本目录装载到我的容器中:

mongodb-setup:
    image: mongo
    volumes:
      - ./scripts:/scripts
    command: "ls -la /scripts"
    depends_on:
      - mongodb

通过检查该容器的输出,ls-la/scripts命令显示mongosetup。sh已经成为一个文件夹,所以我无法运行它。。。

total 4
drwxr-xr-x 3 root root   60 Jun 14 02:29 .
drwxr-xr-x 1 root root 4096 Jun 14 03:25 ..
drwxr-xr-x 2 root root   40 Jun 14 02:29 mongosetup.sh

我试着将文件和卷装载为“.scripts:/scripts”。

我应该注意到,这仅在使用“容器卷中的克隆存储库”时才会发生。如果我将存储库克隆到我的计算机,然后在VS代码中打开它并从那里构建它,它可以正常工作。

我的devcontainer设置为进入我的mongodb图像。它可以访问我在/workspace/REPONAME中的文件,如果我在那里选中它,则该文件不是文件夹:

共有1个答案

洪越泽
2023-03-14

正如@ikhvjs在评论中指出的那样,这是因为没有找到文件,所以Docker会自动将其作为一个目录。

我之前曾尝试将文件本身装载到该位置,因此Docker创建了目录。当它不起作用时,我将挂载更改为它上面的目录,导致文件夹仍然存在,并导致我的困惑。

 类似资料:
  • 问题内容: Docker文档指出,可以将单个文件装载到Docker容器中: -v标志还可用于从主机挂载单个文件-而不是目录。 这会将您放入新容器中的bash外壳中,您将从主机获得bash历史记录,退出容器时,主机将具有在容器中键入命令的历史记录。 但是,当我尝试将文件挂载为目录时: 我的Dockerfile看起来像这样: Docker版本为1.9.1,内部版本为a34a1d5。 这是文档问题,还是

  • 运行此命令时,文件将作为目录而不是文件装入容器中。 我在Docker中通过单个文件卷挂载为目录,以及其他一些类似的堆栈溢出问题,但无法得到正确的解决方案。 我已经测试了相同的代码在本地mac笔记本电脑和这里的文件从本地机器挂载到容器作为一个文件,但在本地,我没有docker-in-docker设置。 我有Dockerfile如下所示。 在docker-in-docker环境中挂载文件有哪些不同的解

  • 通过前面小节的学习我们知道:使用Docker时,产生的数据默认是保存到容器的UnionFS的读写层中的。那么,我们不妨思考下这两个问题: 如果不启动容器却想访问数据该怎么办? 容器被销毁或损坏,数据也就消失了,这合理吗? 是的,我想我们的答案应该是一样的,容器和数据不应该被绑定在一起。为此,Docker 提供了两类数据管理的方式: 挂载宿主机目录或文件; 使用数据卷; 本节,我们将介绍如何将宿主机

  • 如何使用钩子(或任何其他钩子)来复制? 在传统的类组件中,我将执行以下操作: 使用hook: (完整示例:https://codesandbox.io/s/2oo7zqzx1n) 这不起作用,因为在中返回的“cleanup”函数捕获装载期间的道具,而不是卸载期间的道具状态。 如何在不运行函数体(或清除)的情况下对每个道具更改进行清理? 一个类似的问题并没有涉及获得最新道具的部分。 文件状态为: 如

  • 这表明 docker:来自后台进程的错误响应:oci运行时错误:container_linux.go:262:启动容器进程导致“process_linux.go:339:container init导致\”rootfs_linux.go:57:安装\\“/appdata/nginx/conf/nginx.conf\\”到rootfs\\“/var/lib/docker/aufs/mnt/dcea2

  • 问题内容: 我有一个用于下载文件的网络界面。当请求进入时,我的glassfish服务器从Web服务流式传输文件,然后将内容写入输出流。我的代码工作正常,除非当文件大小变得很大(如200 MB以上)时,它挂起,显示0%在浏览器中下载,并且文件从未下载。 当我在while循环内移动flush()方法时,它也适用于大型文件。我不确定将flush()放入循环是否有问题。不知道这东西实际上是如何工作的。我的