在泊坞窗

问题描述:

试图备份文件时,如何正确指定命名卷我有以下泊坞窗,撰写文件在泊坞窗

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 
+0

你是对的 - 它的工作原理。感谢:D。你认为我的compose.yml是否正常,或者你看到有什么明显的错误?有大量的教程指定不同的编写方式。 – Kannaj

+0

我觉得很好。如果您刚刚开始使用docker-compose,请查看Docker的可用模块http://docs.ansible.com/ansible/list_of_cloud_modules.html#docker它提供了类似的功能,但只要有理由,您可以管理更多的东西。 (我使用ansible,我喜欢它:-) – aceton1k

您是否尝试过使用--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