gpt4 book ai didi

postgresql - 尝试在 docker 中备份文件时如何正确指定命名卷

转载 作者:行者123 更新时间:2023-11-29 13:22:37 24 4
gpt4 key购买 nike

我有下面的 docker-compose 文件

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 选项有多种格式。您可以使用它来将文件夹从主机绑定(bind)挂载到容器:

-v /folder/on/host:/folder/in/container

将命名卷挂载到容器:

-v named-volume:/folder/in/container

或者只是为容器指定未命名的卷:

-v /this/folder/in/container/will/be/stored/in/volume

关于postgresql - 尝试在 docker 中备份文件时如何正确指定命名卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39121520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com