【发布时间】:2016-03-16 22:37:38
【问题描述】:
我有一个 docker 映像,我在其中使用嵌入式 derby 持久性,如下所示:
COPY BatchDB /opt/ibm/wlp/usr/shared/resources/BatchDB
COPY derby /opt/ibm/wlp/usr/shared/resources/derby
文件夹 BatchDB 有一些运行时文件,这些文件也在映像构建时被复制。
我想使用 docker 卷来持久化 /opt/ibm/wlp/usr/shared/resources/BatchDB 目录,但是在运行容器时,如果我附加由 docker volume create --name dataVolume 在外部创建的 docker 卷,则容器在 BatchDB 文件夹中没有任何文件。
当我挂载一个卷时,我有什么方法可以在构建时存储文件吗?
【问题讨论】:
-
挂载的卷具有优先权,因此您将看不到那里的原始文件。但是,您可以构建单独的映像
COPY BatchDB /opt/ibm/wlp/usr/shared/resources/BatchDB和VOLUME /opt/ibm/wlp/usr/shared/resources/BatchDB。然后使用带有--volumes_from的卷 -
你可以试试 Dockerfie 中的
ONBUILD选项吗? -
我知道它适用于 --volumes-from,但我只是想知道它是否适用于
docker volumeapi。 -
我不知道 ONBUILD 是否可行。我以为它只是在您以我的图像作为基础图像构建新图像时执行
-
你确定创建卷和容器后没有卷覆盖,你的数据不在
/var/lib/docker/volumes/dataVolume/_data吗?让我推荐你使用 docker-compose 和命名卷(版本 3+)而不是 volumes_from,在版本 2 之后不推荐使用。
标签: docker docker-volume