Saiba como criar volumes do Docker facilmente no Windows

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

Esta postagem no blog possui um vídeo complementar criado por colaborador da 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 no 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 executar um contêiner usando docker run. Vou executar este contêiner no modo interativo, em seguida, especificar -V. Aqui, vou colocar o caminho para minha pasta de dados, seguido por dois pontos, e então 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 quero 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 irá desligá-lo, executando exit.

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

Looking for running containers

Enumerando Dados em Volumes do Docker

Agora vamos listar o conteúdo da pasta de dados novamente a partir 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. Os pontos de montagem têm algumas funcionalidades limitadas, no entanto, portanto, 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 pequenas diferenças. 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 está vazia porque criamos um volume em branco. Agora vamos executar Ctrl-P-Q, que nos tirará 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 Docker

Outra maneira de criar um volume é usando o comando docker volume create. Se você não especificar um nome, o Docker dará um nome que é uma longa lista de caracteres aleatórios. Caso contrário, você pode especificar um nome aqui. Vou chamar esse 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

De dentro do contêiner, vá para a pasta logdata e crie alguns arquivos. No momento, 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 nesta pasta.

Two files in C:\logdata

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

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

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

Two log files being shared with containers

Agora, saia deste contêiner. Você ainda deve ter um contêiner em execução e dois contêineres parados.

Two containers still running

Agora pare todos os contêineres em execução, em seguida, execute docker rm para remover todos os contêineres parados.

Removing Docker containers

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

Volume still available

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

Docker volume syntax

Inspeção de Volumes Docker

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

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 contêiner anteriormente.

Files created earlier

Excluindo Volumes Docker

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

> docker volume rm logdata

Agora, se listarmos os volumes, logdata já não estará mais 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

É importante ter cuidado com este comando, por isso há um aviso e um prompt para garantir que você realmente deseja fazer isso. Se eu digitar Y e pressionar enter, ele me 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ê deveria ter obtido uma boa visão geral sobre como gerenciar volumes do Docker no Windows. O Docker é uma ótima plataforma de contêineres. Com seu suporte para Windows e suas novas habilidades em gerenciar volumes do Docker, você será imparável!

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