Onde as imagens e contêineres do Docker são armazenados no host?

O Docker usa dois tipos de formatos para representar os processos em execução — imagens e contêineres, e ambos armazenam dados na unidade do seu computador. Falaremos sobre os comandos que o Docker fornece para lidar com dados e como você pode usá-los para acessar arquivos de imagem e contêiner.
A diferença entre imagens e contêineres
Imagens são o que você cria ao executar o docker build; eles são armazenados em um registro de contêiner, como o Docker Hub, e contêm todos os arquivos e códigos para executar um aplicativo. Você pode pensar neles como arquivos ISO para um sistema operacional de máquina virtual.
Os contêineres são criados a partir de imagens e são como a máquina virtual real que executa o aplicativo. Você pode ter vários contêineres em execução em paralelo na mesma imagem. Cada contêiner terá seu próprio sistema de arquivos, opcionalmente criado com “ montagens de volume ” que ligam os dados do host ao contêiner.
Trabalhando com o armazenamento de imagens do Docker
As imagens armazenam todo o conteúdo da imagem em sua unidade. Sempre que você extrai uma imagem da Internet, ela é baixada e armazenada, geralmente para sempre. As imagens podem ser muito grandes, então isso pode aumentar com o tempo, especialmente para laptops com armazenamento limitado.
Se você deseja acessar os dados da imagem diretamente, geralmente eles são armazenados nos seguintes locais:
- Linux: / var / lib / docker /
- Windows: C: \ ProgramData \ DockerDesktop
- macOS: ~ /Library/Containers/com. docker. docker/Data/vms/0/
Publicidade
No entanto, tocar nesses dados provavelmente é uma má ideia. O armazenamento do Docker é complicado e, na verdade, varia muito dependendo de qual driver de armazenamento está usando. O Linux agora assume como padrão overlay2 na maioria das distros, que nem mesmo é acessível para a maioria dos usuários finais. Mexer com isso pode levar à perda de dados.
Em vez disso, o Docker fornece comandos gerenciados para lidar com imagens. Você pode ver todas as versões das imagens baixadas com um simples comando:
imagem docker ls

Felizmente, não é tão ruim quanto parece, já que as imagens do Docker armazenam as versões de forma incremental. Isso significa que sempre que você baixa uma nova versão, ela apenas substitui as partes que foram alteradas. Se você usa frequentemente a mesma imagem repetidamente, provavelmente não acumulará muito custo de armazenamento.
No entanto, se você usar muitas imagens diferentes, pode ter muitas imagens salvas que nem são mais usadas. Para limpá-los, o Docker fornece um comando integrado para executar a coleta de lixo. Isso removerá todas as imagens que não têm referências, ou seja, não marcadas ou não referenciadas por nenhum contêiner.
remoção de imagem do docker
Para remover todas as imagens antigas não usadas pelos contêineres existentes, execute-o com a sinalização -a:
podar imagem docker -a
Isso cobre o caso de uso principal, mas existem alguns comandos mais úteis:
- inspecionar: exibe informações sobre a versão de um contêiner.
- salvar & load: salva e carrega imagens em um arquivo tar.
- rm: remove uma imagem diretamente.
- pull / push: atualizações de um registro remoto.
- histórico : fornece um changelog.
Trabalho com armazenamento de contêiner Docker
Você pode ver todas as informações sobre um contêiner com docker inspect, que mostra os drivers e dados do sistema de arquivos, bem como todas as montagens e volumes existentes.
docker inspecionar ID do contêiner

Publicidade
Os contêineres armazenam dados de duas maneiras. O primeiro é o sistema de arquivos base, que é copiado da imagem e é exclusivo para cada contêiner. O Docker usa um “ diretório inferior ” e “ dir superior, ” que são camadas separadas que são mescladas em um sistema de arquivos híbrido. O dir inferior armazena os dados da imagem de base e o dir superior armazena tudo o que foi alterado no tempo de execução, como arquivos de log. Em ambos os casos, o armazenamento deles depende do driver do sistema de arquivos que o Docker está configurado para usar.
Depois, há montagens, que ligam diretórios do host ao contêiner, geralmente gerenciados automaticamente com um recurso Docker chamado volumes. Eles são armazenados normalmente e estão acessíveis aos usuários finais. Se você estiver fazendo qualquer trabalho que exija a modificação de dados em contêineres em execução, provavelmente deverá modificar um volume ou montagem de ligação.
Acessando volumes
As montagens Bind podem ser acessadas diretamente e são uma ótima escolha se você deseja armazenar configurações que são usadas para muitos contêineres ou armazenar dados acessíveis que persistem nas reinicializações do contêiner .
Se quiser modificar os dados armazenados em volumes, você também pode fazer isso. Eles são armazenados em um formato padrão acessível no Linux:
/ var / lib / docker / volumes / volumeID / _data
Você pode obter o ID do volume e as informações com a inspeção de volume do docker.
Publicidade
Assim como as imagens, os volumes também podem ficar obsoletos. Você pode removê-los facilmente, mas fazer backup e transferi-los é um processo mais complicado.
volume docker prune volume docker rm volumeID
Modificando o sistema de arquivos de um contêiner do Docker
Se você deseja modificar o sistema de arquivos do contêiner, da mesma forma que as imagens, não é uma boa ideia. Na maioria dos casos, você deve criar uma nova versão do contêiner com as mudanças atualizadas e implantar uma atualização.
No entanto, se você quiser fazer algumas alterações rápidas sem interromper o contêiner, a melhor maneira é abrir um bash shell dentro do contêiner e modificá-lo por meio do Docker. Fazer isso é muito fácil — executar docker exec no contêiner e passar “ bash ” como o comando:
docker exec -it container bash
A partir daqui, você está livre para usar comandos normais do Linux. Se quiser fazer isso remotamente, você pode instalar um servidor SSH em seu contêiner e vincular a porta 22 a outra porta no host.
RELACIONADO: Como fazer SSH em um contêiner Docker
Nenhum comentário