Docker - 如何访问未附加到容器的卷?
Docker - How to access a volume not attached to a container?
我有一个数据容器,其中有一个卷被其他容器使用 (--volumes-from)。
数据容器被意外删除。
谢天谢地,卷没有被删除。
有什么方法可以重新 运行 数据容器并将其指向该卷?
不太确定,但你可以试试
docker run -i -t --volumes-from yourvolume ubuntu /bin/bash
我想您应该可以访问该目录了。
Is there any way can re run the data container and point it BACK to this volume?
当然,我在“”
中详细说明了
您需要创建一个具有相同 VOLUME 的新容器(但 /var/lib/docker/volumes/...
将是空的或具有初始内容)
然后将旧卷移动到新容器卷的路径。
更一般地说,每当我启动数据卷容器时,(如果我的容器被意外删除,稍后重用该路径)
当我想到这个问题时,我主要担心的是数据丢失。下面是我如何将数据从卷复制到 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
:如果 table 创建已经存在,则跳过。没有此标志,table 将被删除。
--complete-insert
:添加列名。没有这个标志,可能会有列不匹配。
恢复备份:
$ mysql -u [username] -p [database_name] < [filename].sql
我有一个数据容器,其中有一个卷被其他容器使用 (--volumes-from)。
数据容器被意外删除。
谢天谢地,卷没有被删除。
有什么方法可以重新 运行 数据容器并将其指向该卷?
不太确定,但你可以试试
docker run -i -t --volumes-from yourvolume ubuntu /bin/bash
我想您应该可以访问该目录了。
Is there any way can re run the data container and point it BACK to this volume?
当然,我在“
您需要创建一个具有相同 VOLUME 的新容器(但 /var/lib/docker/volumes/...
将是空的或具有初始内容)
然后将旧卷移动到新容器卷的路径。
更一般地说,每当我启动数据卷容器时,
当我想到这个问题时,我主要担心的是数据丢失。下面是我如何将数据从卷复制到 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
:如果 table 创建已经存在,则跳过。没有此标志,table 将被删除。--complete-insert
:添加列名。没有这个标志,可能会有列不匹配。
恢复备份:
$ mysql -u [username] -p [database_name] < [filename].sql