【问题标题】:Why does my non-volume data in Docker container persist even after restarting the container?为什么我的 Docker 容器中的非卷数据即使在重新启动容器后仍然存在?
【发布时间】:2017-04-12 12:23:21
【问题描述】:

在我阅读 Docker 容器的某些地方,我发现有些人说他们在重新启动容器时会丢失数据(保存在容器内,而不是卷数据的一部分)。

我尝试创建一个像这样的简单 Ubuntu 容器:docker run -it ubuntu /bin/bash,并在容器内创建了一些文件,然后重新启动它,但我的数据仍然存在。为什么会发生这种情况?为什么我的数据还在?这是新版本 Docker 中的新功能还是我对某些东西有误解?

【问题讨论】:

  • 也许当人们谈论“重新开始”时,他们实际上的意思是“重新创造”。
  • 好的,所以我所拥有的是正常的,这很简单,谢谢。你会回答这个问题吗?

标签: docker docker-container


【解决方案1】:

数据在容器被移除时丢失,而不是在容器停止或重新启动时丢失。

基本上,如果你做docker ps,如果容器保持相同的id(大丑十六进制id),数据不会丢失。

当您的 docker 容器不是由您管理,而是由某种自动管理方法管理时,情况会变得复杂。如果出现故障,此类工具通常会启动新容器。在这种情况下,您应该挂载一个卷以将数据存储在主机上。

【讨论】:

  • killed 表示删除,还是?
  • 实际删除。杀戮几乎就像停止一个容器。 Stop 尝试优雅地停止进程。杀不了。但是它们都将容器保存在那里,所以当你输入“docker ps”时你会看到它们。您可以重新启动它们,您将看到您创建的文件。另一方面,删除将使容器以及其中的所有文件完全消失。
【解决方案2】:

您可能想查看容器生命周期:https://github.com/wsargent/docker-cheat-sheet#lifecycle

docker create 创建一个容器但不启动它。

docker rename 允许重命名容器。

docker run 在一个操作中创建并启动一个容器。

docker rm 删除一个容器。

docker update 更新容器的资源限制。

如果您再次执行docker rmdocker run,您的状态将不再存在。

如果您想要一个临时容器,docker run --rm 将在容器停止后将其移除。

【讨论】:

  • 这已经很清楚了,但是我想知道他们什么时候说:“我们在重新启动容器时丢失了数据”,显然就像上面的评论一样,他们的意思是“重新创建”,而不是重新启动。
猜你喜欢
  • 2013-10-07
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 2020-01-21
  • 2023-02-09
相关资源
最近更新 更多