Sem esforço, crie volumes do Docker no Windows

Os volumes do Docker são a maneira preferida de lidar com dados persistentes criados e usados por contêineres do Docker. Vamos dar uma olhada em como isso funciona, cobrindo como criar volumes do Docker no Windows. Você também aprenderá como gerenciá-los!

Esta postagem no blog tem um vídeo complementar criado pelo colaborador do TechSnips, Matt McElreath. Sinta-se à vontade para assistir ou, se preferir texto, continue lendo!

Armazenando Dados Persistentes

Se você deseja armazenar dados persistentes para contêineres, existem algumas opções. Primeiro, vou mostrar como usar um bind mount. Atualmente, estou em uma pasta chamada data em meu C:\. Se eu listar o conteúdo desta pasta, você verá que tenho cinco arquivos de texto.

Multiple text files in the C:\data folder

Se eu quiser disponibilizar esta pasta para um contêiner, posso montá-la ao iniciar o contêiner.

Vamos lá e executar um contêiner usando docker run. Vou executar este contêiner no modo interativo e depois especificar -V. Aqui, vou colocar o caminho para minha pasta de dados, seguido por dois pontos e, em seguida, especificarei o caminho dentro do contêiner onde gostaria que esta pasta fosse montada.

Para isso, vou especificar a pasta C:\shareddata. Em seguida, vou especificar a imagem do servidor central do Windows e, finalmente, vou especificar que desejo executar o PowerShell assim que estiver dentro do contêiner.

docker run -it -v c:\Data:c:\shareddata microsoft/windowsservercore powershell

Agora que estou dentro do novo contêiner, se eu listar o conteúdo de C:\, você pode ver que tenho uma pasta shareddata.

Listing directory contents in a Docker container

Vamos entrar nessa pasta e listar o conteúdo. Aqui estão meus cinco arquivos de teste que estão localizados no meu host de contêiner.

Files on the host

I can also create files in this folder, which will be available to other containers or my container host. Let’s go ahead and run a new item to create a file called containertest.

Creating a file on the container host

Podemos ver acima que o novo arquivo foi criado de dentro do contêiner. Agora vou sair deste contêiner, o que o desligará, executando exit.

Se eu executar docker ps, você pode ver que atualmente não há contêineres em execução.

Looking for running containers

Enumerando Dados em Volumes Docker

Agora vamos listar o conteúdo da pasta de dados novamente do meu host de contêiner.

Listing files on the container host

Podemos ver o novo arquivo que foi criado de dentro do contêiner chamado containertest. As montagens de ligação têm alguma funcionalidade limitada, no entanto, então os volumes são a maneira preferida de realizar o que estamos tentando fazer. Para começar com volumes, podemos executar o mesmo comando para iniciar um contêiner, mas desta vez com algumas diferenças pequenas. Onde especificamos o volume, em vez de usar o caminho no sistema de arquivos do host do contêiner, vou usar a palavra hostdata como o nome de um volume que quero criar e usar.

De dentro do novo contêiner, se eu listar o conteúdo de C:\, você pode ver novamente que tenho uma pasta chamada shareddata.

Listing files

Se eu listar o conteúdo dessa pasta, atualmente estará vazia porque criamos um volume em branco. Agora, vamos executar Ctrl-P-Q, o que nos levará para fora do contêiner em execução, mas o manterá em segundo plano.

A partir do host do contêiner, execute docker volume ls. Isso listará os volumes atuais neste host de contêiner. Eu tenho um volume chamado hostdata, que foi criado quando o especifiquei no comando docker run.

Listing Docker volumes

Se eu executar docker ps, podemos ver nosso contêiner em execução.

Listing running containers

Pare esse contêiner usando docker stop. Agora não temos mais contêineres em execução.

Stopping a Docker container

Remova os contêineres parados executando docker rm. Se eu listar os volumes novamente, você verá que o volume hostdata ainda está disponível e pode ser montado em novos contêineres.

Listing Docker volumes

Criando Volumes do Docker

Outra maneira de criar um volume é usar o comando docker volume create. Se você não especificar um nome, o Docker dará a ele um nome que é uma longa lista de caracteres aleatórios. Caso contrário, você pode especificar um nome aqui. Vou chamar este volume de logdata. Agora podemos vê-lo na lista quando listamos os volumes novamente.

Creating a new Docker volume

Agora você irá montá-lo em um novo contêiner. Use docker run novamente e para o volume especifique o volume que acabou de ser criado e monte-o em c:\logdata.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Do interior do recipiente, vá até a pasta logdata e crie alguns arquivos. Atualmente, não há arquivos neste diretório, então vá em frente e crie alguns.

PS> New-Item -Name Log1.txt -ItemType File
PS> New-Item -Name Log2.txt -ItemType File

Agora tenho dois arquivos de log neste diretório.

Two files in C:\logdata

Execute novamente Ctrl-P-Q para sair deste recipiente enquanto ele ainda está em execução. Enquanto esse recipiente está em execução, inicie um novo recipiente com o mesmo volume montado.

> docker run -it -v logdata:c:\logdata microsoft/windowsservercore powershell

Se executarmos uma listagem na pasta logdata no novo recipiente, podemos ver os dois arquivos de log sendo compartilhados.

Two log files being shared with containers

Agora, saia deste recipiente. Você deve ter ainda um recipiente em execução e dois recipientes encerrados.

Two containers still running

Agora pare todos os recipientes em execução, depois execute docker rm para remover todos os recipientes encerrados.

Removing Docker containers

Liste os volumes novamente. O volume logdata ainda está disponível para ser montado em futuros recipientes.

Volume still available

Se você executar docker volume, receberá alguma ajuda de uso para o comando.

Docker volume syntax

Inspeção de Volumes do Docker

Já olhamos para o create, então vamos para o inspect. Se eu executar docker volume inspect no volume logdata, ele retornará as propriedades desse volume, incluindo o ponto de montagem, que é o caminho físico do volume no host do recipiente.

Inspecting Docker volumes

Vamos abrir essa pasta usando Invoke-Item e dar uma olhada. Sob a pasta logdata, há uma pasta chamada data. Se abrirmos isso, podemos ver os arquivos que foram criados a partir do recipiente anterior.

Files created earlier

Exclusão de Volumes do Docker

Para excluir um volume, podemos executar docker volume rm, seguido pelo nome do volume que deseja excluir.

> docker volume rm logdata

Agora, se eu listar os volumes, logdata já não estará lá.

Listing Docker volumes

Por fim, podemos usar prune para remover todos os volumes locais não utilizados. Isso excluirá todos os volumes que não estão montados em um contêiner em execução ou parado.

Inspecting the prune parameter

Você deve ter cuidado com este comando, pois há um aviso e uma solicitação para garantir que você realmente deseja fazer isso. Se eu digitar Y e pressionar Enter, ele mostrará quais volumes foram excluídos.

E se eu listar meus volumes novamente, você verá que todos foram excluídos.

No Docker volumes exist

Resumo

Neste post do blog, você deve ter obtido uma boa visão geral sobre como gerenciar volumes do Docker no Windows. O Docker é uma excelente plataforma de contêineres. Com seu suporte para o Windows e suas novas habilidades em gerenciar volumes do Docker, você será imparável!

Source:
https://adamtheautomator.com/create-docker-volume/