Onde as imagens e contêineres do Docker são armazenados no host? Como obter o endereço IP de um contêiner Docker do host Como usar Enums em PHP 8.1 Como se conectar ao localhost em um contêiner Docker Como instalar o Kubernetes Cert-Manager e configurar Vamos criptografar Como usar uma chave SSH privada diferente para comandos Git Shell Como fazer backup do servidor GitLab


0

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 quando executa 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 vinculam os dados do host ao contêiner.

Trabalhando com Armazenamento de Imagens Docker

As imagens armazenam todo o conteúdo da imagem em sua unidade. Sempre que você puxa 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/
  • Janelas: C:ProgramDataDockerDesktop
  • Mac OS: ~/Library/Containers/com.docker.docker/Data/vms/0/
Propaganda

No entanto, tocar nesses dados é provavelmente um péssima ideia. O armazenamento do Docker é complicado e, na verdade, varia muito dependendo de qual driver de armazenamento está usando. Linux agora é padronizado para 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 visualizar todas as versões das imagens baixadas com um comando simples:

docker image ls

Felizmente, não é tão ruim quanto parece, já que as imagens do Docker armazenam 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 possuem referências, ou seja, não marcadas ou não referenciadas por nenhum contêiner.

docker image prune

Para remover todas as imagens antigas não usadas pelos contêineres existentes, execute-o com o -a bandeira:

docker image prune -a

Isso cobre o caso de uso principal, mas existem alguns comandos mais úteis:

  • inspect: exibe informações sobre uma versão do contêiner.
  • save & load: salva e carrega imagens em um tar arquivo.
  • rm: remove uma imagem diretamente.
  • pull/push: atualizações de um registro remoto.
  • history: fornece um changelog.

Trabalhando com Docker Container Storage

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 inspect containerID

Propaganda

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 “diretório 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 qualquer um dos casos, o armazenamento deles depende do driver do sistema de arquivos que o Docker está configurado para usar.

Então, existem montagens, que vincula diretórios do host ao contêiner, geralmente gerenciado 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 opção se você deseja armazenar configurações 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 informações com docker volume inspect.

Propaganda

Assim como as imagens, os volumes também podem ficar obsoletos. Você pode removê-los facilmente, mas fazer o backup e transferi-los é um processo mais complicado.

docker volume prune

docker volume rm volumeID

Modificando o sistema de arquivos de um contêiner do Docker

Se você deseja modificar o sistema de arquivos do contêiner, assim como as imagens, este é um péssima 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 parar o contêiner, a melhor maneira é simplesmente abrir um shell bash dentro do contêiner e modificá-lo por meio do Docker. Fazer isso é muito fácil – execute docker exec no contêiner e passe “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


Like it? Share with your friends!

0

What's Your Reaction?

hate hate
0
hate
confused confused
0
confused
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win

0 Comments

Your email address will not be published. Required fields are marked *

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format