首页 > 解决方案 > .Net Core Docker 在 DigitalOcean 上构建时正在删除图像(图片)

问题描述

我已经使用 docker 在 DigitalOcean 上部署了 .net core 3.1 项目。在我的 wwwroot 目录中的项目中,有一个 images 目录,我将在其中上传图片。上传后,我可以在浏览器中看到图片。

但问题是,如果我再次构建一个 docker 项目并运行它,那么它不会显示之前上传的图片。

我的 docker build 命令是:docker build -t "jugaadhai-service" --file Dockerfile . 和 docker run 命令是docker run -it -d -p 0.0.0.0:2900:80 jugaadhai-service

编辑1: 经过一番搜索,我知道当项目通过docker运行时,文件将上传到docker的容器目录而不是项目目录中。这就是为什么图像不会出现在新版本中的原因。

标签: linuxdockerasp.net-coredigital-ocean

解决方案


因此,当创建 docker 容器时,它是在主机上运行的隔离虚拟环境。如果主机是您的本地计算机或云中的某个主机并不重要,它的工作方式相同。容器是根据 Dockerfile 中的构建定义创建的。这意味着您可以在本地环境中复制它,尝试构建图像,上传一些图像,然后删除图像或创建具有相同标签的新图像。然后图像也消失了。

如果您将图像或文件上传到比方说 DigitalOcean 的容器,并且您使用不同的 重新部署新容器tag,则图像仍然存在于旧容器中。如果你在 kubernetes 上运行,同样的事情,如果 pod/container 重新启动,那么一切都会永远丢失,就好像构建了一个新容器一样。

这就是volumes发挥作用的地方。因此,当您有要存储的持久数据时,您应该将它们存储在容器本身之外。如果要将图像存储在主机或其他网络驱动器上,则必须指定它并将其与容器映射。

你可以在这里找到更多关于它的信息:


推荐阅读