是否可以将文件夹从容器挂载到主机?

Is it possible to mount folder from container to host machine?

例如,我有一个简单的 Node.js / Typescript 应用程序定义如下:

Dockerfile

FROM node:6.2

RUN npm install --global typings@1.3.1

COPY package.json /app/package.json

WORKDIR /app

RUN npm install

COPY typings.json /app/typings.json

RUN typings install

节点包和类型已预安装到映像中。 node_modulestypings 文件夹默认仅存在于 运行ning 容器中。

docker-compose.yml

node-app:
    ...
    volumes:
        - .:/app
        - /app/node_modules
        - /app/typings

我将当前文件夹从主机挂载到容器,它从 /app 的现有文件夹创建卷。这些被安装回容器,因此应用程序可以使用它们。问题是我希望将主机系统上的 typings 文件夹视为只读文件夹(因为某些 IDE 可以向您显示可以在此文件夹中找到的类型提示)。根据我的测试,这些文件夹(node_modulestypings)是在我 运行 容器后在主机上创建的,但它们始终是空的。仅当容器 运行ning 时,是否有可能以某种方式从容器卷中看到它们的内容(最好是只读的)?

您无法通过 Compose 将主机目录设置为只读。 Compose 编排容器,而不是主机系统。

如果您想与主机共享目录,请先在主机上创建它们并将它们作为绑定卷安装(就像您对 .:/app 所做的那样)