如何使用 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 应该工作。
我正在关注 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 应该工作。