在泊坞窗
问题描述:
试图备份文件时,如何正确指定命名卷我有以下泊坞窗,撰写文件在泊坞窗
version: '2'
services:
postgres:
container_name: postgres
image: postgres:${POSTGRES_VERSION}
volumes:
- postgresdata:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
- POSTGRES_DB=42EXP
node:
container_name: node
build: .
links:
- postgres:postgres
ports:
- "8000:8000"
depends_on:
- postgres
command: npm start
volumes:
postgresdata:
上运行docker volume ls
我有
local 42exp_postgresdata
当试图通过执行备份:
docker run --rm --volume=42exp_postgresdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /var/lib/postgresql/data
我得到下面的错误:
docker: Error response from daemon: Invalid volume spec "42exp_postgresdata": Invalid volume destination path: '42exp_postgresdata' mount path must be absolute..
我不确定我在哪里出错,因为它几乎是在文档中指定的确切代码。我如何正确指定要备份的指定卷?
答
你需要的地方安装卷:
docker run --rm -v 42exp_postgresdata:/var/lib/postgresql/data -v $(pwd):/backup \
ubuntu tar cvf /backup/backup.tar /var/lib/postgresql/data
编辑:
注意-v | --volume
选项有多种格式。你可以用它来绑定贴装文件夹从主机到容器:
-v /folder/on/host:/folder/in/container
贴装命名卷容器:
-v named-volume:/folder/in/container
,或者只是为集装箱指定一个未命名的卷:
-v /this/folder/in/container/will/be/stored/in/volume
答
您是否尝试过使用--volumes-from mycompose_postgres_1
(或者您生成的docker映像被调用)?请参阅:https://docs.docker.com/engine/tutorials/dockervolumes/
+0
它看起来像volume-from用于卷容器......我必须使用'--volume = {name}'来命名卷。但它似乎仍然工作 - http://*.com/questions/36011595/docker-named-volumes-vs-doc-data-only-containers – Kannaj
你是对的 - 它的工作原理。感谢:D。你认为我的compose.yml是否正常,或者你看到有什么明显的错误?有大量的教程指定不同的编写方式。 – Kannaj
我觉得很好。如果您刚刚开始使用docker-compose,请查看Docker的可用模块http://docs.ansible.com/ansible/list_of_cloud_modules.html#docker它提供了类似的功能,但只要有理由,您可以管理更多的东西。 (我使用ansible,我喜欢它:-) – aceton1k