docker volume update 명령을 사용하여 클러스터 볼륨 가용성 관리 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker volume update 명령을 사용하여 Docker 클러스터 볼륨의 가용성을 관리하는 방법을 배우게 됩니다. 먼저 Docker Swarm 의 노드 간에 데이터를 공유하는 데 필수적인 클러스터 볼륨을 생성하는 것으로 시작합니다.

생성 후, 볼륨의 가용성 상태를 변경하는 방법을 살펴보겠습니다. 여기에는 가용성을 pause로 업데이트하는 것이 포함되며, 이는 새로운 태스크가 볼륨을 사용하는 것을 방지합니다. 그 다음, 볼륨을 사용할 수 없는 노드에서 태스크를 이동시키기 위한 drain으로 업데이트합니다. 마지막으로, 가용성을 다시 active로 설정하여 새로운 태스크와 기존 태스크 모두 볼륨을 완전히 활용할 수 있도록 하는 방법을 배우게 됩니다. 이 랩은 Swarm 환경 내에서 클러스터 볼륨에 대한 접근 및 사용을 제어하는 실질적인 경험을 제공합니다.

클러스터 볼륨 생성

이 단계에서는 Docker 에서 클러스터 볼륨을 생성하는 방법을 배우겠습니다. 클러스터 볼륨은 Docker Swarm 의 여러 노드에서 여러 컨테이너가 접근할 수 있는 볼륨입니다. 이는 데이터베이스나 파일 서버와 같이 데이터를 공유해야 하는 애플리케이션에 유용합니다.

클러스터 볼륨을 생성하기 전에 Docker Swarm 이 초기화되었는지 확인해야 합니다. 아직 Swarm 을 초기화하지 않았다면 다음 명령을 사용하여 초기화할 수 있습니다.

docker swarm init

Swarm 이 초기화되었음을 나타내는 출력을 볼 수 있습니다.

이제 클러스터 볼륨을 생성해 보겠습니다. --driver local 플래그와 볼륨 이름을 지정하여 docker volume create 명령을 사용합니다. local 드라이버는 기본 드라이버이며 단일 노드에서 볼륨을 생성하는 데 적합합니다. 클러스터 볼륨의 경우 Docker Swarm 이 노드 간의 배포 및 접근을 처리합니다.

docker volume create my-cluster-volume

명령을 실행한 후 생성된 볼륨의 이름이 콘솔에 출력되는 것을 볼 수 있습니다.

my-cluster-volume

볼륨이 생성되었는지 확인하려면 docker volume ls 명령을 사용하여 기존 볼륨을 나열할 수 있습니다.

docker volume ls

출력에 my-cluster-volume이 나열된 것을 볼 수 있습니다.

클러스터 볼륨 가용성을 pause 로 업데이트

이 단계에서는 클러스터 볼륨의 가용성을 pause로 업데이트하는 방법을 배우겠습니다. 볼륨의 가용성이 pause로 설정되면 이 볼륨이 필요한 새로운 태스크는 해당 볼륨을 사용할 수 없는 노드에서는 예약되지 않습니다. 볼륨을 사용하고 있는 기존 태스크는 계속 실행됩니다. 이 상태는 현재 실행 중인 서비스를 중단하지 않고 볼륨의 새로운 사용을 일시적으로 방지하는 데 유용합니다.

이전 단계에서 생성한 my-cluster-volume의 가용성을 변경하기 위해 docker volume update 명령을 사용합니다. --availability 플래그는 원하는 가용성 상태를 지정하는 데 사용됩니다.

docker volume update --availability pause my-cluster-volume

명령을 실행한 후 업데이트를 확인하는 출력을 볼 수 있습니다.

my-cluster-volume

볼륨의 가용성이 pause로 업데이트되었는지 확인하기 위해 docker volume inspect 명령을 사용하여 볼륨을 검사하고 Availability 필드를 찾을 수 있습니다.

docker volume inspect my-cluster-volume

inspect 명령의 출력에서 Spec 섹션 내의 Availability 필드를 찾습니다. pause가 표시되어야 합니다.

[
  {
    "CreatedAt": "...",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
    "Name": "my-cluster-volume",
    "Options": null,
    "Scope": "local",
    "Spec": {
      "Availability": "pause"
    },
    "Status": {}
  }
]

클러스터 볼륨 가용성을 drain 으로 업데이트

이 단계에서는 클러스터 볼륨의 가용성을 drain으로 업데이트하는 방법을 배우겠습니다. 볼륨의 가용성이 drain으로 설정되면 이 볼륨이 필요한 새로운 태스크는 해당 볼륨을 사용할 수 없는 노드에서는 예약되지 않습니다. 또한 Docker Swarm 은 볼륨을 사용하고 있는 기존 태스크를 종료하고 볼륨을 사용할 수 있는 노드에서 다시 예약하려고 시도합니다. 이 상태는 유지 보수를 수행하거나 볼륨을 제거하기 전에 서비스를 볼륨에서 안전하게 마이그레이션하는 데 유용합니다.

다시 docker volume update 명령을 사용하지만 이번에는 --availability 플래그를 drain으로 설정합니다.

docker volume update --availability drain my-cluster-volume

확인으로 볼륨 이름이 출력되는 것을 볼 수 있습니다.

my-cluster-volume

볼륨의 가용성이 drain으로 업데이트되었는지 확인하기 위해 docker volume inspect를 사용하여 볼륨을 검사하고 Availability 필드를 확인합니다.

docker volume inspect my-cluster-volume

출력에서 Spec 섹션 내의 Availability 필드가 이제 drain인지 확인합니다.

[
  {
    "CreatedAt": "...",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
    "Name": "my-cluster-volume",
    "Options": null,
    "Scope": "local",
    "Spec": {
      "Availability": "drain"
    },
    "Status": {}
  }
]

클러스터 볼륨 가용성을 active 로 업데이트

이 마지막 단계에서는 클러스터 볼륨의 가용성을 다시 active로 업데이트하는 방법을 배우겠습니다. 볼륨의 가용성이 active로 설정되면 이 볼륨이 필요한 새로운 태스크는 볼륨을 사용할 수 있는 모든 노드에서 예약될 수 있습니다. 이것은 볼륨의 기본 상태이며 서비스에서 사용할 준비가 되었음을 나타냅니다.

--availability 플래그를 active로 설정하여 docker volume update 명령을 마지막으로 한 번 더 사용합니다.

docker volume update --availability active my-cluster-volume

확인으로 볼륨 이름이 출력되는 것을 볼 수 있습니다.

my-cluster-volume

볼륨의 가용성이 성공적으로 다시 active로 설정되었는지 확인하기 위해 docker volume inspect를 사용하여 볼륨을 검사하고 Availability 필드를 확인합니다.

docker volume inspect my-cluster-volume

출력에서 Spec 섹션 내의 Availability 필드가 이제 active인지 확인합니다.

[
  {
    "CreatedAt": "...",
    "Driver": "local",
    "Labels": {},
    "Mountpoint": "/var/lib/docker/volumes/my-cluster-volume/_data",
    "Name": "my-cluster-volume",
    "Options": null,
    "Scope": "local",
    "Spec": {
      "Availability": "active"
    },
    "Status": {}
  }
]

이제 클러스터 볼륨을 성공적으로 생성하고 pause, drain, active 상태 간에 가용성을 업데이트하는 연습을 완료했습니다.

요약

이 랩에서는 docker volume update 명령을 사용하여 Docker 클러스터 볼륨의 가용성을 관리하는 방법을 배웠습니다. docker volume create를 사용하여 클러스터 볼륨을 생성하는 것으로 시작했습니다.

이어서 볼륨의 가용성 상태를 수정하는 방법을 살펴보았습니다. 기존 태스크가 계속 실행되도록 하면서 새로운 태스크가 볼륨을 사용하지 못하도록 하는 pause로 가용성을 설정하는 방법을 배웠습니다. 그런 다음 볼륨을 사용하는 태스크를 중지하고 다른 곳에서 다시 예약하려고 시도하는 drain으로 가용성을 변경하는 방법을 살펴보았습니다. 마지막으로 새로운 태스크가 볼륨을 활용할 수 있도록 가용성을 다시 active로 설정하는 방법을 배웠습니다. 이러한 단계는 Docker Swarm 환경 내에서 클러스터 볼륨 액세스를 관리하는 유연성을 보여주었습니다.