Docker:在/存储下新创建的文件在哪里?

时间:2016-08-07 21:00:40

标签: docker

我正在运行一个docker容器进程:

host$ docker run -it <image> /etc/bootstrap.sh -bash

然后在容器内部我创建了一个文件/a.txt:

container$ echo "abc" > /a.txt
container$ cat a.txt
abc

我注意到/的文件系统类型是none:

container$ df -h
Filesystem      Size  Used Avail Use% Mounted on
none            355G   19G  318G   6% /
tmpfs           1.9G     0  1.9G   0% /dev
...

inspect命令显示卷为空。

host$ docker inspect <image>
...
"Volumes": null,
...

退出容器进程并重新启动后,文件消失了。我想明白: 1)容器进程的根文件系统实际上是什么; 2)如何保留新创建的文件?

1 个答案:

答案 0 :(得分:1)

问:退出容器进程并重新启动后,文件就消失了。

A: Docker容器中的数据未保留。那就是当容器重新启动时你丢失了所有东西。

问:容器进程的根文件系统究竟是什么?
答:我真的不明白这个问题,但我假设您在询问root用户的主目录在哪里?如果是,则root的主页位于/root

问:如何保留新创建的文件?
答:如果您打算在重新启动容器后仍然保留更改,则需要使用docker的data volume

请参阅: https://docs.docker.com/engine/tutorials/dockervolumes/

基本上,当您启动容器时,可以传入-v选项告诉容器您要将目录从主机的文件系统映射到容器的目录。

这是通过下面的示例命令, $ docker run -d -P --name web -v $(pwd):/root

您希望将当前工作目录映射到容器的/root目录。因此,写入容器的/root/区域的所有内容都会反映到主机的文件系统中并保持不变。