【问题标题】:Docker doesn't save data in host mounted volumeDocker 不在主机挂载的卷中保存数据
【发布时间】:2016-10-30 13:20:24
【问题描述】:

我正在尝试使用 Windows 7 上的 Docker Toolbox 在 docker 容器中启动 jenkins。

我跑

docker run --name jenkins -p 8080:8080 -p 50000:50000 -v "//C/Users/myname/.jenkins:/var/jenkins_home" jenkins  

jenkins 启动良好,但是在 C:/Users/myname/.jenkins 下没有创建任何内容。 我已经创建了文件夹,但它仍然是空的。

当我现在停止并移除容器并重新启动它时,jenkins 已经失去了我之前所做的一切。

我做错了什么?

【问题讨论】:

  • 不是答案,但您是否考虑过从 Docker Toolbox 迁移到更新的 Docker for Windows?它使用不同的管理程序(HyperV 而不是 VirtualBox)和不同的机制将主机文件/目录暴露给你的容器。
  • 这不是仅适用于 Windows 10 吗?我无法升级,因为它是一台工作笔记本电脑。
  • 在这方面帮不了你,但看起来@TInkerTank 已经涵盖了你所有的东西 :)

标签: jenkins docker volume docker-toolbox


【解决方案1】:

使用 Docker Toolbox,Docker 映像实际上并不“在”您的 Windows 机器上运行,而是在您的 Windows 机器上创建的虚拟机上运行。

似乎主机安装的卷确实对 Windows 上的 Docker Toolbox 有一些警告。例如:

也许这里有一些提示可以帮助你让它发挥作用。


如果您确实希望数据在容器之间保留,即使在删除 jenkins 容器之后,您也可以为 jenkins homedir 使用数据卷。在这种情况下,您将按以下方式启动 jenkins:

docker run --name jenkins -p 8080:8080 -p 50000:50000 -v "/var/jenkins_home" jenkins

这基本上为 /var/jenkins_home 目录创建了一个单独的 docker 容器,允许您在不影响数据的情况下删除/升级 / 等 jenkins 容器。

请确保您了解这里发生的情况。读: https://docs.docker.com/engine/tutorials/dockervolumes/

jenkins docker-image 文档中也提到了这一点: https://hub.docker.com/_/jenkins/


或者:是否可以在需要时仅“停止”和“重新启动”容器? - 在这种情况下,您不需要主机安装目录。在这种情况下,只需省略 -v 选项。这确实使备份数据或使用较新的 jenkins 映像变得困难。

【讨论】:

  • 谢谢,这有助于我理解问题。我不知道如何在不使用 Linux 或 Windows 10 的情况下修复它,但也许我找到了解决方法。
【解决方案2】:

我没有设法使用 docker 控制台执行此操作,但是可以在 Docker Toolbock 中使用 Kitematic。 在卷选项卡中,您可以将本地文件夹作为卷添加到容器中。 Jenkins 文件按预期出现在本地文件夹中。

【讨论】:

  • 感谢您分享您的解决方案!
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2017-06-19
  • 2017-06-30
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
相关资源
最近更新 更多