在Docker映像之间切换

时间:2019-04-04 18:22:59

标签: docker docker-compose dockerfile docker-machine

我需要在Mac上使用docker的帮助。我有一个容器,我在其中运行mysql的一个实例,并且在一年前就创建了它,直到今天它工作得很好。我用过Kitematic,我不知道为什么我的mysql容器重新启动后会被清除。遵循本指南

https://timonweb.com/posts/getting-path-and-accessing-persistent-volumes-in-docker-for-mac/

我已经在此路径中找到

    linuxkit-025000000001:/var/lib/docker/volumes/41ba749910c92b2ab8e4d4a538fd6d15fad29864f2068f26629a8a7bddfcb53b/_data# 

带有我的表的mysql文件夹。我可以修复这个可怕的错误吗?谢谢。

2 个答案:

答案 0 :(得分:1)

在主目录中创建一个文件夹,然后在其中复制数据文件夹的内容:

mkdir ~/mysql-data
cp -r /var/lib/docker/volumes/41ba749910c92b2ab8e4d4a538fd6d15fad29864f2068f26629a8a7bddfcb53b/_data/* ~/mysql-data

现在启动一个将〜/ mysql-data映射到/ var / lib / mysql的mysql容器

类似这样的东西:

docker run \
  --name mysql \
  -v ~/mysql-data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=some-password \
  -d \
  mysql:tag

希望这会有所帮助

答案 1 :(得分:0)

好的,我找到了解决方案。不幸的是,由于我可以在线阅读并在Docker文档中阅读,因此在Mac Os X系统(我有Mojave)上,您无法通过/var/lib/docker/volumes文件夹进行访问,因为您必须通过screen进行访问才能查看此文件夹,因为您可以阅读我答案中的链接。所以我做了这些事情:

  • 打开终端并使用screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
  • 您应该看到一个空白屏幕,只需按Enter键,过一会儿,您应该会看到命令行提示符
  • 打开另一个终端并输入docker run -it -v ~/Desktop:/Desktop <runs a container from an image> bash,就像从Docker documentation读到的
  • 用户的~/Desktop/目录现在在容器中显示为/下的目录
  • 在此终端上的testOrSo中创建一个名为home的文件
  • 回到另一个终端并输入find -name "testOrSo"并按enter,现在您已找到该图像的正确路径。在找到您的路径中复制所需的内容(在我的情况下为_data文件夹),然后选择已安装的Desktop文件夹。
  • 您可以在Mac桌面上显示数据。

我知道这可能不是100%完美的解释,或者可能会有更快的方法,但是我解决了我的问题。希望对您有所帮助!