gpt4 book ai didi

docker - docker 如何检测应保存哪些更改,不保存哪些更改?

转载 作者:行者123 更新时间:2023-12-02 21:07:27 25 4
gpt4 key购买 nike

我知道,当我们停止docker时,我们的更改会丢失。有很多答案可以防止这种情况发生-每次提交。想法是在docker运行时会根据镜像旋转一个新容器。另一方面,除非您开始使用 --rm ,否则容器在存在之后会继续一些数据

只是为了简化:

  • 如果您运行 apt-get install vim ,则必须提交以保存更改
  • 但是如果更改 nginx.conf 或将新的文件上传到HDFS,则不会丢失数据。

  • 所以,只是好奇:
    docker 如何知道 保存什么以及不知道什么?例如:在 apt-get-install 的末尾,我们在系统中有 新文件我上载新文件时相同。容器/图像 没有区别,对吗?只是 I / O修改。 那么,当我们停止镜像时,docker如何知道应保存哪些修改?

    最佳答案

    这里的基本规则:

  • 您显式存储在容器外部的所有内容(数据库S3)将使容器失效。
  • 如果在使用docker run -v选项或Docker Compose volumes:选项创建容器时将卷附加到容器,则写入该目录的所有数据将在容器中失效。 (如果是命名卷,则一直持续到您用docker volume rm对其进行编码。)
  • 一旦您对容器进行docker rm,容器文件系统中的所有其他内容都会丢失。

  • 如果您需要诸如应用程序源代码或安装在镜像中的帮助程序之类的东西,请编写 Dockerfile来描述如何构建镜像和运行 docker build。将 Dockerfile检查到应用程序旁边的源代码控制中。

    使用Docker的一般理论是,您总是从零开始。当您对图像进行 docker build编码时,您将从基本图像开始并将应用程序安装到该图像中。您永远不会尝试升级已安装的应用程序。同样,当您对容器进行 docker run编码时,您将从其图像的新副本开始。

    因此,对于您所提问题的最明确答案是,如果在停止容器时始终对文件进行 docker rm编码,则对新容器进行 docker run编码时,它将具有基本镜像以及已装入卷中的内容。 Docker将永远不会自动保留任何超出此范围的内容。

    您永远不要运行 docker commit:这会导致无法在以后(在六个月内发现严重的安全问题并有可能使您的网站瘫痪)重新创建魔术图像。同样,绝对不要在运行中的容器中安装软件,因为一旦退出容器,该软件就会丢失。将其添加到您的 Dockerfile并重建。

    关于docker - docker 如何检测应保存哪些更改,不保存哪些更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062500/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com