我试图在Docker容器中添加一些文件,例如" touch"。我在关闭此容器后发现,再次启动它,我的所有文件都丢失了。另外,我使用ubuntu映像,关机后重新启动相同的映像,apt-get安装的所有软件都不见了!就像运行新图像一样。那么如何保存我创建的任何文件呢?
我的问题是,docker" store"它的所有文件系统如" / tmp"作为内存文件系统,实际上什么都没有保存到磁盘?
感谢。
答案 0 :(得分:1)
这是docker的正常行为。您必须定义一个卷来保存数据,即使关闭容器,这些卷也会存在。
例如,使用简单的apache webserver:
$ docker run -dit --name my-apache-app -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
这将使您的"当前"导演到容器上的/ usr / local / apache2 / htdocs,所以这些文件将在那里可用。
另一种方法是使用命名卷,这些卷不链接到磁盘上的目录。请参阅文档: Docker Manage - Data
答案 1 :(得分:0)
使用docker run命令fetch_assoc()
启动容器时,docker会根据您指定的图像启动 new 容器。您对前一个容器所做的任何更改都将不可用,因为这是从基本映像生成的新实例。
有多种方法可以将数据/更改保存到容器中。
使用Docker commit创建包含更改的新图像,并根据该图像启动未来的容器。
docker run ubuntu
使用docker commit <container-id> new_image_name
docker run new_image_name
列出所有容器。它将列出所有容器,包括已退出的容器。找到您正在处理的容器的docker id,并使用docker ps -a
启动它。
docker start <id>
参考