Как использовать команду docker volume update для управления доступностью кластерных томов

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как управлять доступностью томов Docker-кластера с помощью команды docker volume update. Вы начнете с создания кластерного тома, который является важной частью для обмена данными между узлами в Docker Swarm.

После создания тома вы узнаете, как изменить его состояние доступности. Это включает обновление доступности до состояния pause, которое предотвращает использование тома новыми задачами, а затем до состояния drain, которое направлено на перенос задач с узлов, где том недоступен. Наконец, вы научитесь возвращать доступность в состояние active, что позволяет полноценно использовать том как новыми, так и существующими задачами. В этом лабораторном занятии вы получите практический опыт управления доступом и использованием кластерных томов в среде Swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/ls -.-> lab-555263{{"Как использовать команду docker volume update для управления доступностью кластерных томов"}} docker/inspect -.-> lab-555263{{"Как использовать команду docker volume update для управления доступностью кластерных томов"}} docker/volume -.-> lab-555263{{"Как использовать команду docker volume update для управления доступностью кластерных томов"}} end

Создание кластерного тома

На этом этапе мы узнаем, как создать кластерный том в Docker. Кластерный том - это том, который может быть доступен несколькими контейнерами на разных узлах в Docker Swarm. Это полезно для приложений, которые должны обмениваться данными, например, базами данных или файловыми серверами.

Перед созданием кластерного тома необходимо убедиться, что Docker Swarm инициализирован. Если вы еще не инициализировали Swarm, вы можете сделать это с помощью следующей команды:

docker swarm init

Вы должны увидеть вывод, указывающий, что Swarm был инициализирован.

Теперь создадим кластерный том. Мы будем использовать команду docker volume create с флагом --driver local и укажем имя тома. Драйвер local - это стандартный драйвер, подходящий для создания томов на одном узле. В случае кластерного тома Docker Swarm управляет распределением и доступом между узлами.

docker volume create my-cluster-volume

После выполнения команды вы должны увидеть имя созданного тома, выведенное в консоль:

my-cluster-volume

Чтобы убедиться, что том был создан, вы можете вывести список существующих томов с помощью команды docker volume ls:

docker volume ls

В выводе вы должны увидеть my-cluster-volume в списке.

Обновление доступности кластерного тома до состояния pause

На этом этапе мы узнаем, как обновить доступность кластерного тома до состояния pause. Когда доступность тома установлена в состояние pause, новые задачи, требующие этого тома, не будут запланированы на узлах, где том недоступен. Существующие задачи, использующие том, будут продолжать работать. Это состояние полезно для временного предотвращения нового использования тома без нарушения работы текущих служб.

Мы будем использовать команду docker volume update для изменения доступности тома my-cluster-volume, который мы создали на предыдущем этапе. Флаг --availability используется для указания желаемого состояния доступности.

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

После выполнения команды вы должны увидеть вывод, подтверждающий обновление:

my-cluster-volume

Чтобы убедиться, что доступность тома была обновлена до состояния pause, мы можем проверить том с помощью команды docker volume inspect и найти поле Availability.

docker volume inspect my-cluster-volume

В выводе команды inspect найдите поле Availability в разделе Spec. Оно должно показывать 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

В выводе убедитесь, что поле Availability в разделе Spec теперь имеет значение 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, новые задачи, требующие этого тома, могут быть запланированы на любом узле, где том доступен. Это состояние по умолчанию для тома и означает, что он готов к использованию службами.

Мы воспользуемся командой docker volume update в последний раз, установив флаг --availability в значение active.

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

Вы должны увидеть имя тома, выведенное в качестве подтверждения:

my-cluster-volume

Чтобы убедиться, что доступность тома была успешно установлена обратно в состояние active, мы проверим том с помощью команды docker volume inspect и проверим поле Availability.

docker volume inspect my-cluster-volume

В выводе убедитесь, что поле Availability в разделе Spec теперь имеет значение 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-кластера с помощью команды docker volume update. Мы начали с создания кластерного тома с использованием команды docker volume create.

Затем мы изучили, как изменить состояние доступности тома. Мы научились устанавливать доступность в состояние pause, которое предотвращает использование тома новыми задачами, но позволяет существующим задачам продолжать работу. Затем мы увидели, как изменить доступность на drain, при котором предпринимается попытка остановить задачи, использующие том, и запланировать их повторно на других узлах. Наконец, мы научились устанавливать доступность обратно в состояние active, что позволяет новым задачам использовать том. Эти шаги продемонстрировали гибкость управления доступом к кластерным томам в среде Docker Swarm.