如何从Docker卷中删除数据?
我准备了包含构build我的其他项目所需库的Docker镜像。 我想有一个目录/ myLibs来自不同项目的库,例如:
/ myLibs:
- 了projectA
- 项目B
- 项目C
Dockerfile:
FROM my-base:1.0 VOLUME /myLibs COPY projectA/bin/*.so* /myLibs/projectA/bin/ CMD /bin/bash
内置:
docker build -t my-libs:1.0 .
然后我想在每次重buildprojectA的时候更新这个图像中的libs。 所以我准备了Dockerfile:
FROM my-libs:1.0 # I changed parent image, because /myLibs/projectB and /myLibs/projectC should remain VOLUME /myLibs RUN ls -al /myLibs && rm -rf /myLibs/projectA && ls -al /myLibs RUN ls -al /myLibs COPY projectA/bin/*.so* /myLibs/projectA/bin/ CMD /bin/bash
因此,我在我的卷中有一个旧的projectA库:
Step 4 : RUN ls -al /myLibs && rm -rf /myLibs/projectA && ls -al /myLibs ---> Running in 1e3e25084e69 total 12 drwxr-xr-x 3 root root 4096 Jul 16 13:52 . drwxr-xr-x 75 root root 4096 Jul 16 13:52 .. drwxr-xr-x 4 root root 4096 Jul 16 13:51 projectA total 8 drwxr-xr-x 2 root root 4096 Jul 16 13:52 . drwxr-xr-x 75 root root 4096 Jul 16 13:52 .. ---> d5973da5965c Removing intermediate container 1e3e25084e69 Step 5 : RUN ls -al /myLibs ---> Running in 1d93575b50c2 total 12 drwxr-xr-x 3 root root 4096 Jul 16 13:52 . drwxr-xr-x 75 root root 4096 Jul 16 13:52 .. drwxr-xr-x 4 root root 4096 Jul 16 13:51 projectA ---> 6d2a48a5b67b
如何从卷中删除文件?
如果你想改变重build的文件,你可能不想在卷中做到这一点。 一般来说,数据量是要保存的数据。 请记住容器的安装会在容器build立之后发生,所以可能发生的情况是旧数据的容量随着您在图像(重新)构build中所做的任何更改而增加。
你在用什么/myLibs
? 如果它们是要在构build中设置的只读文件,则最好不要使用卷并将其作为图像的一部分。 如果你想修改它们,在构build之后pipe理它可能会更好 – 如果你只是改变networking卷中的文件,没有真正的理由来重build图像。