Como usar o comando docker volume update para gerenciar a disponibilidade do volume do cluster

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar a disponibilidade de volumes de cluster Docker usando o comando docker volume update. Você começará criando um volume de cluster, que é essencial para compartilhar dados entre nós em um Docker Swarm.

Após a criação, você explorará como alterar o estado de disponibilidade do volume. Isso inclui atualizar a disponibilidade para pause, o que impede que novas tarefas usem o volume, e depois para drain, que visa mover as tarefas dos nós onde o volume não está disponível. Finalmente, você aprenderá como definir a disponibilidade de volta para active, permitindo que o volume seja totalmente utilizado por tarefas novas e existentes. Este laboratório oferece experiência prática no controle de como seus volumes de cluster são acessados e usados dentro de um ambiente Swarm.

Criar um volume de cluster

Nesta etapa, aprenderemos como criar um volume de cluster no Docker. Um volume de cluster é um volume que pode ser acessado por vários contêineres em diferentes nós em um Docker Swarm. Isso é útil para aplicativos que precisam compartilhar dados, como bancos de dados ou servidores de arquivos.

Antes de criar um volume de cluster, precisamos garantir que o Docker Swarm esteja inicializado. Se você ainda não inicializou o Swarm, pode fazê-lo com o seguinte comando:

docker swarm init

Você deve ver uma saída indicando que o swarm foi inicializado.

Agora, vamos criar um volume de cluster. Usaremos o comando docker volume create com a flag --driver local e especificaremos o nome do volume. O driver local é o driver padrão e é adequado para criar volumes em um único nó. Para um volume de cluster, o Docker Swarm lida com a distribuição e o acesso entre os nós.

docker volume create my-cluster-volume

Após executar o comando, você deve ver o nome do volume criado impresso no console:

my-cluster-volume

Para verificar se o volume foi criado, você pode listar os volumes existentes usando o comando docker volume ls:

docker volume ls

Você deve ver my-cluster-volume listado na saída.

Atualizar a disponibilidade do volume do cluster para pause

Nesta etapa, aprenderemos como atualizar a disponibilidade de um volume de cluster para pause. Quando a disponibilidade de um volume é definida como pause, novas tarefas que exigem este volume não serão agendadas em nós onde o volume não está disponível. As tarefas existentes que usam o volume continuarão a ser executadas. Este estado é útil para impedir temporariamente o novo uso de um volume sem interromper os serviços em execução.

Usaremos o comando docker volume update para alterar a disponibilidade do my-cluster-volume que criamos na etapa anterior. A flag --availability é usada para especificar o estado de disponibilidade desejado.

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

Após executar o comando, você deve ver a saída confirmando a atualização:

my-cluster-volume

Para verificar se a disponibilidade do volume foi atualizada para pause, podemos inspecionar o volume usando o comando docker volume inspect e procurar o campo Availability.

docker volume inspect my-cluster-volume

Na saída do comando inspect, procure o campo Availability dentro da seção Spec. Ele deve mostrar 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": {}
  }
]

Atualizar a disponibilidade do volume do cluster para drain

Nesta etapa, aprenderemos como atualizar a disponibilidade de um volume de cluster para drain. Quando a disponibilidade de um volume é definida como drain, novas tarefas que exigem este volume não serão agendadas em nós onde o volume não está disponível. Além disso, o Docker Swarm tentará desligar as tarefas existentes que estão usando o volume e reagendá-las em nós onde o volume está disponível. Este estado é útil para migrar graciosamente os serviços de um volume antes de realizar a manutenção ou removê-lo.

Usaremos novamente o comando docker volume update, mas desta vez definiremos a flag --availability como drain.

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

Você deve ver o nome do volume impresso como confirmação:

my-cluster-volume

Para verificar se a disponibilidade do volume foi atualizada para drain, inspecionaremos o volume usando docker volume inspect e verificaremos o campo Availability.

docker volume inspect my-cluster-volume

Na saída, confirme que o campo Availability dentro da seção Spec agora é 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": {}
  }
]

Atualizar a disponibilidade do volume do cluster para ativo

Nesta etapa final, aprenderemos como atualizar a disponibilidade de um volume de cluster de volta para active. Quando a disponibilidade de um volume é definida como active, novas tarefas que exigem este volume podem ser agendadas em qualquer nó onde o volume estiver disponível. Este é o estado padrão para um volume e indica que ele está pronto para uso pelos serviços.

Usaremos o comando docker volume update pela última vez, definindo a flag --availability como active.

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

Você deve ver o nome do volume impresso como confirmação:

my-cluster-volume

Para verificar se a disponibilidade do volume foi definida com sucesso de volta para active, inspecionaremos o volume usando docker volume inspect e verificaremos o campo Availability.

docker volume inspect my-cluster-volume

Na saída, confirme que o campo Availability dentro da seção Spec agora é 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": {}
  }
]

Você agora criou com sucesso um volume de cluster e praticou a atualização de sua disponibilidade entre os estados pause, drain e active.

Resumo

Neste laboratório, aprendemos como gerenciar a disponibilidade de volumes de cluster Docker usando o comando docker volume update. Começamos criando um volume de cluster usando docker volume create.

Posteriormente, exploramos como modificar o estado de disponibilidade do volume. Aprendemos a definir a disponibilidade como pause, o que impede que novas tarefas usem o volume, enquanto permite que as tarefas existentes continuem. Em seguida, vimos como alterar a disponibilidade para drain, que tenta parar as tarefas que usam o volume e reagendá-las em outro lugar. Finalmente, aprendemos a definir a disponibilidade de volta para active, permitindo que novas tarefas utilizem o volume. Essas etapas demonstraram a flexibilidade de gerenciar o acesso ao volume do cluster dentro de um ambiente Docker Swarm.