我正在运行一个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)如何保留新创建的文件?
答案 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/
区域的所有内容都会反映到主机的文件系统中并保持不变。