Как принудительно удалить образ Docker с помощью Terraform Destory

Я следил за учебником по terraform.io, в котором я подготовил образ докера и контейнер с помощью terraform, а затем уничтожил стек 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 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?

1 ответ

Решение

Сообщение об ошибке указывает на то, что существует другой контейнер, использующий то же изображение. Возможно, отдельный док-контейнер подготовлен вне terraform и использует тот же образ докера nginx в руководстве. Проверьте свои docker ps -a чтобы увидеть, есть ли такой контейнер, если да, просто запустите docker rm -f <container_name>чтобы удалить его, и ваше уничтожение терраформ должно работать.

Другие вопросы по тегам