无法备份 docker 卷

  • 本文关键字:docker 备份 docker
  • 更新时间 :
  • 英文 :


我正在按照这里的官方 docker 指南来备份 docker 卷。我也知道这个SO问题,但是我仍然遇到错误。运行以下命令:

docker run --rm --volumes-from dbstore -v $(pwd):/backup ny_db_1 tar cvf /backup/backup.tar /dbdata

无论我输入什么映像名称或容器名称或容器 ID,我都会收到以下错误:

Unable to find image 'ny_db_1:latest' locally

我要备份的卷:

$ docker volume ls
DRIVER              VOLUME NAME
local               ny_postgres_data

我的容器:

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
39e71e660eda        postgres:10.1-alpine   "docker-entrypoint.s…"   4 days ago          Up 23 minutes       0.0.0.0:5434->5433/tcp   ny_db_1

如何备份我的卷?

更新:

我尝试了以下方法,但遇到了一个新错误:

$ docker run --rm --volumes-from 39e71e660eda -v $(pwd):/backup postgres:10.1-alpine tar:local cvf /backup/backup.tar /dbdata

/usr/local/bin/docker-entrypoint.sh: line 145: exec: tar:local: not found

>docker run语法docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]-ny_db_1是容器的名称,docker将尝试使用不存在的IMAGE"ny_db_1",因此出现错误:"Unable to find image 'ny_db_1:latest' locally"(如果未指定,则默认[:TAG]latest(。

--volumes-from会将卷从指定容器装载到从IMAGE[:TAG]生成的新容器中,例如:docker run --rm --volumes-from db -v $(pwd):/backup ubuntu:18.04 tar czvf /backup/backup.tar /dbdata

注意:如果您要备份PostgreSQL数据库,那么恕我直言,最好使用适当的工具来备份和还原数据库,例如:

使用pg_dumpall进行备份:

docker run --rm 
--name db-backup 
--entrypoint pg_dumpall 
--volume ${PWD}/backup:/backup 
--volumes-from db 
postgres:9 --host /var/run/postgresql --username postgres --clean --oids --file /backup/db.dump

使用psql恢复:

docker run --rm -it 
-v ${PWD}/backup:/restore 
--name restore 
postgres:10.1-alpine
docker exec restore psql 
--host /var/run/postgresql 
--username postgres 
--file /restore/db.dump postgres
docker rename restore NEW_NAME

在这里尝试以下命令:

docker run -it --rm -v ny_postgres_data:/volume -v /tmp:/backup ny_db_1 
tar -cjf /backup/ny_postgres_data -C /volume ./

最新更新