3.5 持久化数据库
您是否注意到,每次我们启动容器时,我们的待办事项列表都会被清除干净。为什么是这样?让我们深入了解容器的工作原理。
容器的文件系统
当容器运行时,它使用镜像中的各个层作为其文件系统。每个容器也有自己的“暂存空间”来创建/更新/删除文件。任何更改都不会在另一个容器中看到,即使它们使用的是相同的镜像。
在实践中观察
为查看实际效果,我们将启动两个容器并在每个容器中创建一个文件。您将看到在一个容器中创建的文件在另一个容器中不可用。
-
启动一个
ubuntu
容器,该容器将创建/data.txt文件,写入1 到 10000 之间的随机数。$ docker run -d ubuntu bash -c "shuf -i 1-10000 -n 1 -o /data.txt && tail -f /dev/null"
如果您对命令感到好奇,我们将启动一个 bash shell 并调用两个命令(为什么我们有
&&
)。第一部分选择一个随机数并将其写入/data.txt
. 第二个命令只是监视文件以保持容器运行。 -
通过访问容器中的终端验证您是否可以看到输出。为此,请转到Docker Desktop 中的容器,将鼠标悬停在运行ubuntu镜像的容器上,然后选择显示容器操作菜单。从下拉菜单中,选择Open in terminal。
您将在 ubuntu 容器中看到一个运行 shell 的终端。运行以下命令以查看
/data.txt
文件的内容。之后再次关闭此终端。$ cat /data.txt
如果你更喜