将主机中的空文件夹挂载到 Docker 中的非空文件夹

qsp*_*qsp 12 docker

我使用的工具是在 Docker 映像中提供的。由于安装该工具非常复杂,有很多依赖项,我想在主机上使用我的 IDE 工作,但在容器上运行它。

所以在下载并加载图像后,我运行:

sudo docker run -it -v /home/myself/WIP/thetool:/home/thetool name/label
Run Code Online (Sandbox Code Playgroud)

没有挂载,工具在 下/home/thetool,但是挂载了,这个文件夹是空的(因为宿主机里的文件夹是空的)。

我需要从容器中复制工具,然后挂载它,还是有办法直接做。

yam*_*enk 21

您实际上可以使用具有显式设备挂载点的 docker 卷来实现这一点。

如果目录/home/myself/WIP/thetool为空,请执行以下操作:

创建一个 docker 卷,如下所示:


docker volume create --driver local \
    --opt type=none \
    --opt device=/home/myself/WIP/thetool \
    --opt o=bind \
    tool_vol
Run Code Online (Sandbox Code Playgroud)

启动容器并挂载创建的卷:

sudo docker run -it -v tool_vol:/home/thetool name/label
Run Code Online (Sandbox Code Playgroud)

现在,即使主机文件夹最初是空的/home/thetool,容器内的数据也将在容器内可用/home/myself/WIP/thetool。


pro*_*typ 7

Docker-compose for yamenk 很好的答案是:

version: '2'                                                                                                                                                                                                        
services:
  your_service:
    volumes:
      - tool_vol:/home/thetool
    build: .
    command: your_command
volumes:
  tool_vol:
    driver: local
    driver_opts:
      type: none
      device: /home/myself/WIP/thetool
      o: bind
Run Code Online (Sandbox Code Playgroud)