2016-11-28 54 views
2

无处不在,当我读到Docker容器,我发现很多的人讲,他们失去了他们的数据(保存的容器,而不是容积数据的一部分内),当他们重新启动容器。为什么在重新启动容器后,我的非卷数据在Docker容器持久性中?

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

+3

也许当人们谈论“重新启动”时,他们实际上是指“重新创建”。 –

+0

好吧,我所拥有的是正常的,那很简单,谢谢你。你会回答这个问题吗? –

回答

3

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

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

时不知何故你搬运工集装箱不是由您管理就变得复杂,但通过某种自动化,管理方法的。像这样的工具通常在失败时启动新的容器。在这种情况下,您应该安装一个卷以将数据存储在主机上。

+0

杀死意味着删除,或? –

+0

实际删除。杀死几乎就像停止一个容器。停止试图优雅地停止该过程。杀死不。但他们都将容器放在那里,所以当你输入“docker ps”时你会看到它们。您可以重新启动它们,您将看到您创建的文件。另一方面删除将使容器完全消失,连同其内的所有文件。 – HakRo

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将在容器停止后将其移除。

+0

这已经很清楚了,但是我想知道他们何时说:“当我们重启容器时我们丢失了数据”,显然就像上面的评论,他们的意思是“重新创建”,而不是重新启动。 –