【问题标题】:How to persist changes in boot2docker如何在 boot2docker 中持久化更改
【发布时间】:2015-01-14 07:56:48
【问题描述】:

我对 Docker 还很陌生,偶然发现了一个我无法找到任何解决方案的问题。

我在 Mac 上,所以我必须使用 Boot2Docker 作为我的环境。我使用 boot2docker ssh 在 VM 内完成所有工作,以尽可能模拟“真实”情况。

我的问题是,当我关闭 boot2docker 并关闭 boot2docker 或停止时,我会丢失所有更改...如何保留我的编辑?

我所做的是创建一些目录,例如 /opt/sites,并将一些代码添加到 .profile。当我再次启动 boot2docker 时,一切都消失了。

我尝试将所有内容都放在 /Users... 作为 boot2docker 1.3 及更高版本自动挂载该位置,但随后在某些容器(更具体地说是 MySQL 容器...)上使用 --volumes 时遇到问题

我认为我可以解决数据存储,(--volumes问题),但是我将PATH和其他环境变量的定义放在哪里?

我可能误解了一些东西,所以请指出正确的方向;-)

【问题讨论】:

  • 一个问题(我可能离这里很远)。您也确实创建了 docker 容器,对吗?那是你挂载卷的地方,也是你设置 MySQL 等的地方。Boot2Docker 只是一个小型 Linux VM,因为 Mac OSX 不是 Linux。
  • 我确实创建了容器并安装了卷。但是,当我为我的 MYSQL 容器映射一个卷以存储其数据库时,(/Users...)它失败了...如果我在 /opt/sites/mysql/data 上安装一个卷,它一切正常。我试图创建一个使用 bash 脚本来设置、创建、运行、启动和停止容器组的环境。我想设置我的 PATH 变量来指出这些脚本。我在 /Users... 上有脚本,所以它们是安全的,但是如何以持久的方式在 VM 内设置我的 PATH 变量?
  • 好的,你能告诉我你如何安装它吗?
  • 感谢您的帮助,非常感谢 docker run \ --name=redmine-mysql \ -d \ --env-file $SITE_ROOT/redmine/mysql.env \ -v $ SITE_ROOT/redmine/mysql:/var/lib/mysql \ sameersbn/mysql 当 SITE_ROOT 指向 /Users 上的目录时,我遇到 MySQL 问题...如果我将它指向 boot2docker 环境中的 /opt/sites (boot2docker ssh)然后它工作。这是问题的一方面,另一方面是如果我停止并启动,boot2docker 环境中的所有内容都消失了......难道事情不应该在 VM 中持续存在吗?您不能在不丢失所有内容的情况下启动和停止它吗?
  • 尝试学习格式化但被打断了...docker run \ --name=redmine-mysql \ -d \ --env-file $SITE_ROOT/redmine/mysql.env \ -v $SITE_ROOT/redmine/mysql:/var/lib/mysql \ sameersbn/mysql 阅读起来更容易...

标签: docker boot2docker


【解决方案1】:

对 boot2docker 映像进行更改后,运行“boot2docker save”命令。重新启动 boot2docker 后,您应该会看到您的更改仍然存在。

【讨论】:

  • 很遗憾,没有docker-machine save。请参阅my answer 以获得解决方案。
【解决方案2】:

如果您使用Docker Toolbox,则使用docker-machine 而不是boot2docker。不幸的是,docker-machine 没有等效于 boot2docker save,如 Migrate from Boot2Docker to Docker Machine 中所述。

相反,您应该在 boot2docker 虚拟机中使用 /var/lib/boot2docker/profile 文件来保存每次 boot2docker 虚拟机重新启动时运行的初始脚本。在this github issue 中查看更多信息。

【讨论】:

    【解决方案3】:

    Docker 容器是无状态的。如果容器关闭或重启,容器的内容将回滚到其原始状态,这意味着容器在运行时发生的所有更改都将消失。

    您可以保存/导出编辑后的图像或使用卷。

    【讨论】:

    • 问题不在于容器。我知道他们是无国籍的。我在 boot2docker 环境中遇到问题,一旦停止和启动,我所做的所有更改都会丢失...我可以通过使用 /Users 上的自动挂载文件系统来解决部分问题,但是如何将更改持久保存到启动脚本、.profile 等...
    • 据我所知,docker 中的 /etc/hosts 文件不会持续存在。如果您对 /etc/hosts 进行了更改,那么一旦您重新启动容器,这些更改就会消失。我猜 .profile 也会发生同样的情况?
    猜你喜欢
    • 2020-01-09
    • 1970-01-01
    • 2015-02-15
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多