如何使用 terraform destroy 强制删除 Docker 图像

How to force delete Docker image with terraform destroy

我正在关注 a tutorial on terraform.io 让我使用 terraform 提供 docker 图像和容器,然后销毁 terraform 堆栈。但是,我收到以下错误:

Error: Unable to remove Docker image: 
Error response from daemon: conflict: unable to delete 540a289bab6c (must be forced) - 
image is being used by stopped container ae12197d265d

我知道本机 Docker 解决方案只是 运行 docker rmi -f 540a289bab6c。但是,我想知道是否有一种 terraform 方法来解决这个问题?

terraform 资源 docker_image 的文档显示了 terraform 试图在 terraform destroy 上破坏图像的原因:模板 main.tf 已将 keep-locally 设置为 true.但它没有说明如何强制破坏。

教程中的main.tf如下:

terraform {
  required_providers {
    docker = {
      source = "terraform-providers/docker"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.latest
  name  = "tutorial"
  ports {
    internal = 80
    external = 8000
  }
}

那么,我如何强制 terraform destroy 使用此模板,而无需使用 docker 本机工具进行手动干预?

报错提示有另一个容器依赖同一个镜像。可能是在 terraform 之外提供了一个单独的 docker 容器,并在教程中使用了相同的 nginx docker 图像。检查你的 docker ps -a 看看是否有这样的容器,如果有的话 运行 docker rm -f <container_name> 删除它并且你的 terraform destroy 应该工作。