要在Docker上交付并避免累积图像,必须做些什么?

要在Docker上交付并避免累积图像,必须做些什么?,docker,release,Docker,Release,我使用Docker来执行我创建的网站。 当发布必须交付时,我必须构建一个新的Docker映像并从中启动一个新容器 问题是图像和容器正在积累并占用巨大的空间。 除了交付之外,我还需要停止正在运行的容器并删除它和源映像 我不需要Docker命令行,但需要一个清单或一个过程来避免忘记任何事情 例如: -停止运行集装箱 -删除停止的容器 -删除旧图像 -树立新形象 -启动新容器 我错过什么了吗? 我不习惯Docker,也许这个非常经典的用例有一些最佳实践?您应该使用: docker system df

我使用Docker来执行我创建的网站。 当发布必须交付时,我必须构建一个新的Docker映像并从中启动一个新容器

问题是图像和容器正在积累并占用巨大的空间。 除了交付之外,我还需要停止正在运行的容器并删除它和源映像

我不需要Docker命令行,但需要一个清单或一个过程来避免忘记任何事情

例如: -停止运行集装箱 -删除停止的容器 -删除旧图像 -树立新形象 -启动新容器

我错过什么了吗? 我不习惯Docker,也许这个非常经典的用例有一些最佳实践?

您应该使用:

docker system df
调查docker使用的空间

之后你可以使用

docker system prune -a --volumes

删除未使用的组件。容器在执行此操作之前,您应该自己阻止它们,但这样您可以确保涵盖所有内容。

适合我的本地工作流是:

  • 在没有Docker的情况下,在本地进行核心开发。交互式调试器和实时重新加载等功能在非Docker环境中工作正常,没有奇怪的黑客攻击或根访问,安装我需要的工具通常只需要一个
    brew
    apt get
    步骤。让我所有的pytest/junit/rspec/jest/。。。测试通过了

  • docker构建一个新图像

  • docker stop&&docker rm
    旧集装箱

  • docker运行一个新容器

  • 当旧图像的数量开始困扰我时,
    docker系统将进行修剪

  • 如果您使用的是Docker Compose,您可能可以用
    Docker Compose up--build
    替换中间的步骤集

    在生产环境中,顺序略有不同:

  • 当您的CI系统看到新提交时,在运行存储库的本地测试后,它会
    docker build&&docker push
    一个新映像。映像具有唯一的标记,可以是时间戳或源代码管理提交ID或版本标记

  • 您的部署系统(可以是CI系统或单独的CD系统)告诉您正在使用的任何群集管理器(Kubernetes,一个包含Docker Swarm、Nomad、Ansible playbook等的组合文件)有关新版本标记的信息。部署系统负责停止、启动和移除容器

  • 如果您的群集管理器尚未处理此问题,请运行cron作业以
    docker system prune