将主机中的空文件夹挂载到Docker中的非空文件夹
我正在使用的工具在Docker镜像中提供。 由于安装这个工具对于大量的依赖关系来说是非常复杂的,我想用我的IDE工作在主机上,但是在容器上运行它。
所以下载并加载图像后,我运行:
sudo docker run -it -v /home/myself/WIP/thetool:/home/thetool name/label
如果没有安装,该工具位于/home/thetool
,但在安装时,该文件夹为空(因为主机中的文件夹为空)。
我需要从容器中复制工具,然后安装它,或者有一种方法可以直接进行。
你可以使用明确的设备挂载点来实现这个工作。
如果目录/ home / myself / WIP / thetool为空,请执行以下操作:
像这样创build一个docker卷:
docker volume create --driver local \ --opt type=none \ --opt device=/home/myself/WIP/thetool \ --opt o=bind \ tool_vol
启动容器并安装创build的卷:
sudo docker run -it -v tool_vol:/home/thetool name/label
现在,容器内的/home/thetool
的数据将在/home/myself/WIP/thetool
即使主机文件夹最初为空。
为了实现这个目的,主机卷被devise为将主机中的文件注入到容器中,并允许您从容器外部pipe理文件。
您可以将容器作为容器入口点的一部分从容器中复制出来,但是需要将容器安装在与容器中的目录不同的位置,以便使源和目标都可用。 此示例入口点如下所示:
#!/bin/sh if [ ! -d "/data" ]; then ln -s /data_save /data elif [ -z "$(ls -A /data)" ]; then cp -a /data_save/. /data/ fi exec "$@"
然后,该映像的Dockerfile将复制并configuration该入口点:
COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]