为什么 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 rm
和 docker run
,您的状态将不再存在。
If you want a transient container, docker run --rm
will remove the container after it stops.
删除容器时数据会丢失,而不是在停止或重新启动时丢失。
基本上,如果你这样做 docker ps
,如果容器保持相同的 ID(丑陋的十六进制 ID),数据不会丢失。
当您的 docker 容器不是由您管理,而是通过某种自动管理方法管理时,情况会变得复杂。如果出现故障,此类工具通常会启动新容器。在这种情况下,您应该安装一个卷以在主机上存储您的数据。
在某些地方,当我读到 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 rm
和 docker run
,您的状态将不再存在。
If you want a transient container,
docker run --rm
will remove the container after it stops.
删除容器时数据会丢失,而不是在停止或重新启动时丢失。
基本上,如果你这样做 docker ps
,如果容器保持相同的 ID(丑陋的十六进制 ID),数据不会丢失。
当您的 docker 容器不是由您管理,而是通过某种自动管理方法管理时,情况会变得复杂。如果出现故障,此类工具通常会启动新容器。在这种情况下,您应该安装一个卷以在主机上存储您的数据。