【问题标题】:How to force delete Docker image with terraform destroy如何使用 terraform destroy 强制删除 Docker 映像
【发布时间】:2021-02-07 22:49:09
【问题描述】:

我正在关注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 原生工具进行人工干预?

【问题讨论】:

    标签: docker nginx terraform hcl terraform-provider-docker


    【解决方案1】:

    错误消息表明有另一个容器依赖于同一个图像。可能是在 terraform 之外配置了一个单独的 docker 容器,并在教程中使用了相同的 nginx docker 映像。检查您的 docker ps -a 以查看是否有这样的容器,如果有,只需运行 docker rm -f <container_name> 将其删除,您的 terraform destroy 应该可以工作。

    【讨论】:

    • 是的!我从 10 个月前就停止了依赖 ngnix 映像的容器。删除这些后,terraform destroy 起作用了。
    猜你喜欢
    • 2013-07-13
    • 2022-12-05
    • 2016-06-06
    • 2019-12-13
    • 2019-06-25
    • 2021-11-16
    • 1970-01-01
    • 2017-10-27
    • 2021-12-12
    相关资源
    最近更新 更多