为什么 Docker 容器中的非卷数据即使在重新启动容器后仍然存在?

Why does my non-volume data in Docker container persist even after restarting the container?

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

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

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

docker create creates a container but does not start it.

docker rename allows the container to be renamed.

docker run creates and starts a container in one operation.

docker rm deletes a container.

docker update updates a container's resource limits.

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

If you want a transient container, docker run --rm will remove the container after it stops.

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

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

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