【发布时间】:2022-02-08 14:44:02
【问题描述】:
我有一个app,它将在docker 容器 内创建一个目录storage,并在其中存储生成的文件。我希望将这些文件和子文件夹(在存储目录内)复制到主机目录test。
容器所在目录:
# sudo docker exec -it eajcdfufh /bin/bash
root#eajcdfufh:~# ls
storage
root#eajcdfufh:~ cd storage
folder1 file1
为了实现这个操作,我尝试输入volumes params,但不幸的是没有任何东西被复制到本地目录。
docker-compose.yml
version: "3.9"
services:
app:
build:
context: ./
volumes:
- /home/test:/root/storage
ports:
- "8000:8000"
nginx:
restart: always
build:
context: ./nginx
ports:
- "80:80"
depends_on:
- app
请问为什么什么都没有被复制?以及如何执行此类操作?
谢谢,非常感谢您的帮助!!!
【问题讨论】:
-
在编辑
docker-compose.yml文件后,您是否重新运行过docker-compose up?如果没有,您需要在挂载出现在容器中之前执行此操作。 -
自行撰写无法复制文件;您需要命令式
docker cp命令(似乎没有docker-compose包装器)。您显示的卷挂载应该可以工作,假设容器/root/storage目录是写入输出的位置;正如@NickODell 指出的那样,您必须重新启动容器(并丢失现有内容),这将隐藏该目录中原始图像中的任何内容。如果你不想要 Docker 的文件系统隔离功能,也可以考虑在容器外运行这个程序。
标签: docker docker-compose volume docker-volume