快速 docker 容器刷新工作流程

Quick docker container refresh workflow

这可能是重复的,但我看到的所有答案都不适合我。

我正在使用 docker (17.06.2-ce),docker-compose (1.16.1)。

我有一个 solr 图像,用于开发和测试目的(在 CI 上也是如此)。 对镜像进行更改时,我需要重建镜像并重新创建容器,以便容器使用最新的可能镜像,而后者又从本地存储库获取最新的可能代码。

我根据官方 solr-docker 图像创建了自己的图像。 repo 是一个文件夹,其中包含我应用于图像的其他步骤,例如复制文件和使用 sed 更改现有配置。

我在 repo 中工作,后台有容器 运行。

当我需要刷新容器时,我通常会执行这些命令

sudo docker-compose stop sudo docker rm $(sudo docker ps -a -q) sudo docker rmi $(sudo docker images -q) sudo docker-compose up

以上 4 个命令是对我有用的唯一方法。我尝试过的所有其他方法都没有重建图像,也没有根据新的重建图像创建容器。换句话说,图像中的代码会过时。

问题:

  1. 是否可以使用更少的命令刷新映像 + 重建容器?
  2. 每次我 运行 以上 4 个命令,docker 会下载 ~500MB 的依赖项。是否可以不下载它们并使用更新的本地代码和现有的缓存依赖项重建图像?

我通常 docker-compose rm && docker-compose build && docker-compose up 重新创建 docker 容器:它不会下载 500mb。

您可以使用 docker-compose down 执行以下操作:

down            Stop and remove containers, networks, images, and volumes

因此要使用的命令将是:docker-compose down --rmi local && docker-compose up

--rmi local 选项将删除构建的映像,从而强制在 up

上重建