Você pode usar o Docker Volumes para salvar alterações de um determinado diretório de seus contêineres do Docker. Em palavras simples, você pode persistir dados de seus contêineres do Docker usando volumes do Docker.
Você pode dizer ao Docker qual diretório do seu contêiner do docker para persistir mudanças em seu Dockerfile Quando você cria imagens personalizadas do docker usando Dockerfile.
Neste artigo, mostrarei como usar o Docker Volumes em Dockerfile e como gerenciar esses volumes. Vamos começar.
Nesta seção, criarei uma imagem personalizada do Docker do servidor Apache 2 a partir da imagem do Docker httpd: 2.4 e use volumes do Docker para persistir os dados do Apache Webroot.
Primeiro, crie um novo diretório (digamos www3) para sua imagem personalizada do Docker (digamos www: v1) e navegue até ele:
$ mkdir www3 && CD www3
Agora crie um Dockerfile com o seguinte comando:
$ touch dockerfile
Agora edite o Dockerfile arquivo com Nano ou vim editor de texto.
Nano:
$ Nano Dockerfile
Vim:
$ vim Dockerfile
Agora adicione as seguintes linhas e salve o arquivo:
Aqui, De httpd: 2.4 significa que a imagem base desta imagem personalizada do docker é httpd: 2.4
Workdir/usr/local/apache2/htdocs significa que, quando você ioga no shell (interface da linha de comando) de recipientes feitos a partir desta imagem personalizada, você estará no /usr/local/apache2/htdocs Diretório do contêiner por padrão.
VOLUME /usr/local/apache2/htdocs significa, criar um novo volume para cada um dos recipientes criados a partir desta imagem personalizada e persiste todos os arquivos no /usr/local/apache2/htdocs Diretório desse contêiner para este novo volume.
Agora que você tem o seu Dockerfile Pronto, é hora de construir nossa imagem personalizada do Docker (vou chamá -la www: v1).
Para construir sua imagem personalizada do Docker www: v1 usando o Dockerfile, Execute o seguinte comando:
$ docker build -t www: v1
A imagem personalizada do Docker www: v1 é criado com sucesso.
Listando imagens de docker disponíveis localmente:
Você pode listar todas as imagens do Docker disponíveis localmente com o seguinte comando:
Lista de imagens $ docker
Como você pode ver, o www: v1 A imagem tem cerca de 178 MB de tamanho e foi criada há cerca de um minuto.
Trabalhando com volumes e contêineres do Docker:
Criamos um volume habilitado para o Docker Image www: v1 Na seção anterior deste artigo acima.
Para criar um contêiner do Docker (digamos App1) da imagem personalizada do Docker www: v1, Execute o seguinte comando:
$ docker run -d - -name = App1 www: v1
O recipiente do docker App1 deve ser criado.
Agora execute o seguinte comando para trazer à tona a concha do App1 recipiente:
$ Docker Exec -it App1 /Bin /Bash
Como você pode ver, estou no /usr/local/apache2/htdocs diretório por padrão.
Vamos criar um índice.html Arquive aqui com o seguinte comando:
$ eco "Agora saia do App1 recipiente.
$ saída
Agora execute o seguinte comando para encontrar o endereço IP do App1 recipiente:
$ Docker Inspecione App1 | Endereço Grep
Como você pode ver, o endereço IP é 172.17.0.2
Agora, de qualquer navegador da web, se você visitar a página em 172.17.0.2, você deve ver o índice.html página que você acabou de criar.
Agora vamos testar se a persistência funciona ou não.
Primeiro pare o App1 Container com o seguinte comando:
$ Docker Container Stop App1
Em seguida, inicie o contêiner novamente com o seguinte comando:
$ Docker Container Iniciar App1
Agora encontre o endereço IP do contêiner novamente:
$ Docker InspepApp1 | Endereço Grep
Como você pode ver, o índice.html Página permanece inalterada quando eu o acesso no meu navegador da web. Isso significa que o volume do docker está persistindo dados do App1 recipiente.
Gerenciando o Docker Volumes:
Você pode listar todos os volumes do Docker no computador com o seguinte comando:
Lista de volume $ docker
Como você pode ver, eu tenho 2 volumes de docker no meu computador. A longa sequência hexadecimal marcada na captura de tela abaixo, é o volume gerado automaticamente para o App1 recipiente.
Quando você cria um contêiner a partir de uma imagem do Docker que usa volumes, um novo volume como esse será gerado para cada contêiner que você cria.
Por exemplo, eu criei outro contêiner App2 de www: v1 imagem que eu construí a partir do Dockerfile que usa volume.
Como você pode ver, um novo volume é gerado.
Ambos os volumes contêm diferentes dados. Os dados persistem para apenas um recipiente para o qual foi gerado. Por exemplo, o volume gerado para o App1 contêiner persiste dados apenas para o App1 recipiente. O mesmo vale para o App2 recipiente. O volume gerado para o App1 O contêiner não armazena dados do App2 recipiente.
Você pode remover volumes se não precisar mais dele. Para que isso funcione, você deve parar e remover o recipiente, o volume é anexado a. Se você tentar remover um volume anexado a um contêiner, você receberá a seguinte mensagem de erro.
Digamos que você queira excluir o volume para App2 Contêiner, primeiro execute os seguintes comandos para parar e remover o contêiner:
$ Docker Container Stop App2
$ Docker Container RM App2<
Agora remova o volume que foi anexado a App2 Container com o seguinte comando:
$ Docker Volume RM 962B2D970BCD96DE860B348130A84AA86C0AAAA55378B3DCE35225659679FF808
O volume deve ser removido.
Você pode usar o CÓPIA DE comando em seu Dockerfile Para copiar arquivos do seu computador host para os volumes do Docker. Dessa forma, qualquer contêiner que você criar a partir da sua imagem personalizada do Docker terá esses arquivos por padrão. Você pode verificar mais sobre CÓPIA DE no Dockerfile documentação.
Então é basicamente assim que você trabalha com volumes do Docker usando Dockerfile. Obrigado por ler este artigo.