当前位置: 首页 > 知识库问答 >
问题:

Docker容器文件在我停止容器后丢失[重复]

桓风史
2023-03-14

我拉Ubuntu图像使用docker拉

我使用docker exec连接到容器,然后创建一个文件,然后退出。

再次,当我执行docker exec文件丢失。

如何维护该容器中的文件,我尝试了dockerfile和标记docker图像,效果很好。

但是,有没有其他方法可以让docker容器中的文件保持更长的时间?

共有2个答案

长孙星汉
2023-03-14

将内容保存在容器中的最佳方法是使用Docker卷:

╭─exadra37@exadra37-Vostro-470 ~/Developer/DevNull/stackoverflow  
╰─➤  sudo docker run --rm -it -v $PWD:/data ubuntu 

root@00af7ccf1d3b:/# echo "Persits data with Docker Volumes" > /data/docker-volumes.txt

root@00af7ccf1d3b:/# cat /data/docker-volumes.txt 
Persits data with Docker Volumes

root@00af7ccf1d3b:/# exit

╭─exadra37@exadra37-Vostro-470 ~/Developer/DevNull/stackoverflow  
╰─➤  ls -al
total 12
drwxr-xr-x 2 exadra37 exadra37 4096 Nov 25 15:34 .
drwxr-xr-x 8 exadra37 exadra37 4096 Nov 25 15:33 ..
-rw-r--r-- 1 root     root       33 Nov 25 15:34 docker-volumes.txt

╭─exadra37@exadra37-Vostro-470 ~/Developer/DevNull/stackoverflow  
╰─➤  cat docker-volumes.txt                                                                                                                                                                                  
Persits data with Docker Volumes
sudo docker run --rm -it -v $PWD:/data alpine 
  • 我使用标志-v将当前目录$PWD映射到容器内的/data目录
  • 容器内:
    • 我给它写了一些内容
    • 我读了同样的内容
    • 我离开了集装箱
    • 我使用ls-al来确认文件被保存到我的计算机中。
    • 我确认可以在我的计算机文件系统中访问相同的文件。

卢英叡
2023-03-14

一种选择是提交更改。添加文件后,当容器仍在运行时,您应该运行:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

另一个选项是,也许您想使用卷,但这取决于您的逻辑和需求。

 类似资料:
  • 我在官方docker网站上遵循了“开始”教程,一切都很顺利,直到我尝试删除容器。每次当我运行时 或 具有该 ID 的初始容器将停止或删除,但新容器出现并运行。我试图使用以下命令更新容器: 然而,这没有帮助。 这里是'docker info'命令结果: 和“docker inspect[container_id]”

  • 根据我目前阅读的教程,使用“”将从图像启动一个容器,容器将在后台运行。这就是它的样子,我们可以看到我们已经有了容器id。 但如果我运行“”,则不会返回任何内容。 所以我尝试了“”,我可以看到容器已经退出: 我做错了什么吗?如何解决此问题?

  • 尝试停止或重新启动docker容器时,我收到以下错误消息: 但当我跑的时候 我可以看到日志,所以很明显容器确实存在。有什么想法吗? 编辑: 对不起,我忘了提这个: 当我运行时,我看到容器已经启动并正在运行。但是其中的应用程序出现故障,所以我想重新启动它,或者只是在线获取该应用程序的新版本。但是当我无法停止并删除容器时,我也无法启动并运行一个新应用程序,这将监听相同的端口。

  • 问题内容: 根据我到目前为止阅读的教程,使用“ ”将从图像启动容器,并且该容器将在后台运行。看起来是这样,我们可以看到我们已经有了容器ID。 但是如果我运行“ ”,则什么也没有返回。 所以我尝试了“ ”,可以看到容器已经退出: 我做错了什么?如何解决此问题? 问题答案: 在CentOS的dockerfile有一个默认的命令。 这意味着,在后台()中运行时,外壳程序会立即退出。 更新2017 最近泊

  • 根据我到目前为止阅读的教程,使用“”将从图像启动一个容器,并且容器将在后台运行。这是看起来的样子,我们可以看到我们已经有了容器ID。 我做错什么了吗?如何解决此问题?

  • 这个问题展示了如何从停止的容器中复制文件。这要求我知道文件的完整路径,包括其文件名。我知道要从中复制文件的目录,但我不知道它的文件名,因为它是动态生成的。如何列出已停止Docker容器中目录中的文件? 如果Docker容器正在运行,那么下面的Docker命令非常有效。但是,如果Docker容器停止,它将失败。 注意:文件不存储在持久卷中。