Docker - 如何访问未附加到容器的卷?

时间:2016-01-13 17:49:43

标签: docker containers data-containers docker-volume

我有一个数据容器,其中包含其他容器使用的卷(--volumes-from)。

数据容器被意外删除。

谢天谢地,音量没有删除。

有什么方法可以重新运行数据容器并将其指向此卷吗?

3 个答案:

答案 0 :(得分:1)

  

有没有办法可以重新运行数据容器并将其指回到此卷?

当然,我在" How to recover data from a deleted Docker container? How to reconnect it to the data?"

中详述了它

您需要创建一个具有相同VOLUME的新容器(但 its path /var/lib/docker/volumes/...将为空或具有初始内容)

然后将旧版卷移动到新容器卷的路径。

更一般地说,每当我启动数据卷容器I register its volume path in a file时(如果我的容器被意外删除,以后再重用该路径)

答案 1 :(得分:1)

当我提到这个问题时,我主要关心的是数据丢失。 我是如何将数据从卷复制到AWS S3 的:

# Create a dummy container - I like Python
host$ docker run -it -v my_volume:/datavolume1 python:3.7-slim bash

# Prepare AWS stuff
# executing 'cat ~/.aws/credentials' on your development machine
# will likely show them
python:3.7-slim$ pip install awscli
python:3.7-slim$ export AWS_ACCESS_KEY_ID=yourkeyid
python:3.7-slim$ export AWS_SECRET_ACCESS_KEY=yoursecrectaccesskey

# Copy
python:3.7-slim$ aws s3 cp /datavolume1/thefile.zip s3://bucket/key/thefile.zip

或者,您可以使用aws s3 sync

MySQL / MariaDB

我的具体示例是关于MySQL / MariaDB的。如果要备份MySQL / MariaDB数据库,只需执行

$ mysqldump -u [username] -p [database_name] \
            --single-transaction --quick --lock-tables=false \
            > db1-backup-$(date +%F).sql

您可能还需要考虑

  • --skip-add-drop-table:如果表创建已存在,请跳过该创建。没有此标志,表将被删除。
  • --complete-insert:添加列名称。没有此标志,则可能存在列不匹配。

要还原备份:

$ mysql -u [username] -p [database_name] < [filename].sql

答案 2 :(得分:0)

不完全确定,但您可以尝试

docker run -i -t --volumes-from yourvolume ubuntu /bin/bash

我认为您应该能够访问该目录。