当前位置: 首页 > 知识库问答 >
问题:

Docker-如何访问未连接到容器的卷?

柴禄
2023-03-14

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

数据容器意外被删除。

谢天谢地,卷没有被删除。

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

共有3个答案

东郭凯捷
2023-03-14

当我遇到这个问题时,我主要担心的是数据丢失。以下是我如何将数据从卷复制到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的数据库,只需执行

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

你也可以考虑

  • --skip-add-drop-table:如果表已存在,则跳过表创建。没有此标志,表将被删除。
  • --fint-插入:添加列名。如果没有此标志,可能会出现列不匹配。

要恢复备份,请执行以下操作:

$ mysql -u [username] -p [database_name] < [filename].sql
年烈
2023-03-14

不完全确定,但你可以试试

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

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

隆谦
2023-03-14

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

当然,我在“如何从已删除的Docker容器中恢复数据?如何将其重新连接到数据?”中对此进行了详细介绍

您需要创建具有相同卷的新容器(但其路径为空或具有初始内容)

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

更一般地说,每当我启动数据卷容器时,我都会在文件中注册它的卷路径(如果我的容器被意外删除,稍后可以重用该路径)

 类似资料:
  • 我有一个数据容器,它有一个被其他容器使用的卷(-volumes from)。 数据容器意外被删除。 谢天谢地,卷没有被删除。 有什么方法可以重新运行数据容器并将其指向此卷?

  • 我无法将作为docker容器运行的应用程序连接到mongoDB。我知道新版本docker compose不推荐使用“链接”,所以我尝试使用自定义网络。我的码头工人。yml: 我的应用程序的Dockerfile: 当我运行时,我在应用程序中得到以下错误消息: 在第一次连接时连接到服务器[127.0.0.1:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.

  • 我有 3 个码头工人撰写文件。一个启动Kafka,另外两个是消费者和生产者。在 kafka 中添加了其他 docker 撰写文件中的external_links,但仍然无法从容器内部访问 kafka。从容器外部,我可以通过 localhost:9092 访问,但是在 docker 容器内部呢?

  • 问题内容: 我在将作为docker容器运行的nodeJS应用程序连接到mongoDB时遇到问题。让我解释一下到目前为止我做了什么: 如您所见,已经有一个mongo docker容器正在运行。 现在我正在运行我的nodeJS应用程序docker容器(这是来自meteorJS的构建): 在这个Docker容器中,我想通过运行以下命令来运行应用程序: 现在我得到了错误 我已经尝试通过设置以下内容来设置M

  • 我试图用PHP、MariaDB和一个教程创建一个PHP开发环境,该教程建议使用Adminer进行数据库管理。因此,我生成了我的文件如下: 但是,当我为MariaDB设置卷时,在管理员登录页面中出现了一个错误。当我没有设置它们时,它似乎工作得很好。

  • 我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库: