Consegui encontrar os contêineres no diretório /var/lib/docker/containers
, mas não consigo encontrar as imagens.
Quais são os diretórios e arquivos /var/lib/docker
?
Consegui encontrar os contêineres no diretório /var/lib/docker/containers
, mas não consigo encontrar as imagens.
Quais são os diretórios e arquivos /var/lib/docker
?
Respostas:
O conteúdo do /var/lib/docker
diretório varia de acordo com o driver que o Docker está usando para armazenamento .
Por padrão este será aufs
, mas pode cair de volta para overlay
, overlay2
, btrfs
, devicemapper
ou zfs
dependendo do seu suporte do kernel. Na maioria dos lugares, esse será aufs
o RedHatsdevicemapper
.
Você pode definir manualmente o driver de armazenamento com a opção -s
ou--storage-driver=
para o daemon do Docker .
/var/lib/docker/{driver-name}
conterá o armazenamento específico do driver para o conteúdo das imagens. /var/lib/docker/graph/<id>
agora contém apenas metadados sobre a imagem nos arquivos json
e layersize
.No caso de aufs
:
/var/lib/docker/aufs/diff/<id>
tem o conteúdo do arquivo das imagens./var/lib/docker/repositories-aufs
é um arquivo JSON que contém informações de imagem local. Isto pode ser visto com o comando docker images
.No caso de devicemapper
:
/var/lib/docker/devicemapper/devicemapper/data
armazena as imagens/var/lib/docker/devicemapper/devicemapper/metadata
os metadadosdocker info
e encontre o local real específico para sua configuração .
Docker for Mac
com 2 imagens de 1,5 GB cada e /var/lib
não possui diretório docker
.
Ao usar o Docker for Mac Application, parece que os contêineres estão armazenados na VM localizada em:
~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
ATUALIZAÇÃO (Cortesia de mmorin ):
A partir de 15 de janeiro de 2019, parece que existe apenas este arquivo:
~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw
que contém o Docker Disk e todas as imagens e contêineres dentro dele.
ubuntu
, nginx
), ou este é o local para todos os recipientes? A pergunta original pede imagens , não recipientes ...
Docker for Mac
duas imagens de 1,5 GB cada e ~/Library/Containers/Data/com.docker.docker/Data
não possui diretório com.docker.driver.amd64-linux
e o único arquivo grande está vms/0/Docker.raw
com 3,6 GB.
du -hd1 ~/Library/Containers/com.docker.docker/Data/
essa era a maneira antiga de fazer, agora mudou. Ignore esta resposta a partir de 2019
No caso especial do Mac OS X ou Windows, usando o boot2docker, suas imagens do Docker são armazenadas em uma VM do VirtualBox gerenciada pelo boot2docker.
Esta VM será armazenada no local normal das imagens do VirtualBox:
OS X: ~/VirtualBox VMs/boot2docker-vm
Janelas: %USERPROFILE%/VirtualBox VMs/boot2docker-vm
Você pode redefini-lo executando (AVISO: Isso destruirá todas as imagens que você criou e baixou até o momento):
boot2docker down
boot2docker destroy
boot2docker init
boot2docker up
Isso é especialmente útil se você mantiver toneladas de imagens intermediárias ao criar / depurar uma compilação sem as opções úteis --rm, cito-as aqui para referência:
docker build -t webapp --rm=true --force-rm=true .
ao invés de:
docker build -t webapp .
%USERPROFILE%\.docker\machine\machines
(observe o ponto final no caminho)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
Na verdade, as imagens do Docker são armazenadas em dois arquivos, como mostra o seguinte comando
$ docker info
Arquivo de dados:
/var/lib/docker/devicemapper/devicemapper/data
Arquivo de metadados:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
é muito útil, mas a saída Docker Root Dir: /var/lib/docker
não indica o local de armazenamento da imagem (consulte a resposta específica do Mac acima).
No recém-lançado 'Docker for Windows', que usa o Hyper-V, os dados estão localizados no disco rígido virtual do Docker:
C: \ Usuários \ Público \ Documentos \ Hyper-V \ Discos rígidos virtuais \ MobyLinuxVM.vhdx
Você também pode abrir o 'Gerenciador Hyper-V' para acessar o Docker / MobyLinuxVM.
C:\ProgramData\docker\windowsfilter
para mim. Mais informações: stackoverflow.com/a/39971954/188740
As imagens são armazenadas em /var/lib/docker/graph/<id>/layer
.
Observe que as imagens são apenas diferentes da imagem pai. O ID pai é armazenado com os metadados da imagem /var/lib/docker/graph/<id>/json
.
Quando você docker run
uma imagem. O AUFS 'mesclará' todas as camadas em um sistema de arquivos utilizável.
No Ubuntu você pode "jogar" com imagens em execução
sudo baobab /var/lib/docker
Na verdade, as imagens são armazenadas dentro /var/lib/docker/aufs/diff
Para alguém que esteja usando a caixa de ferramentas do Docker (que usa a docker-machine), as respostas relativas ao boot2docker no Mac OS X não são válidas. A VM da máquina de encaixe é chamada "padrão" e existe no /Users/<username>/.docker/machine/machines/default/
diretório
No Docker para Windows ( Windows nativo), o armazenamento padrão do contêiner é:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker build
comando e não vejo um arquivo que acho que seja o arquivo de imagem. Eu vejo algumas pastas e alguns arquivos de texto (por exemplo, service.txt). Que tipo de arquivo e com qual extensão ele docker build
cria?
Se você estiver usando o Docker para MAC (não boot2docker
), o local será/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
jasper@~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2
Encontrei a imagem. Mas esses não são os contêineres. Não vê-los neste diretório de dados realmente ..
Conforme respondido aqui , se você estiver no Mac, ele estará localizado em
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Expandindo a resposta de Tristan, no Windows com Hyper-V você pode mover a imagem com estas etapas em matthuisman:
No Windows 10,
- Stop docker etc
- Digite "Gerenciador Hyper-V" na caixa de pesquisa da barra de tarefas e execute-o.
- Selecione seu PC no painel esquerdo (o Mine é chamado DESKTOP-CBP **)
- Clique com o botão direito do mouse na máquina virtual correta (a Mine é chamada MobyLinuxVM)
- Selecione "Desligar" (se estiver em execução)
- Clique com o botão direito do mouse novamente e selecione "Mover"
- Siga as instruções
docker build
comando. Estou em um computador com Windows 10. Olho em discos rígidos C: \ Usuários \ Público \ Documentos \ Hyper-V \ Virtual, mas tudo o que vejo é MobyLinuxVM.vhdx. Onde as imagens reais são armazenadas?
Se você lembrar que o Docker ainda está sendo executado em uma VM, os caminhos do sistema são relativos à VM e não ao sistema Mac Osx. Como diz tudo, está contido em um arquivo VM:
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Tente executar a imagem Alpine com esta opção de volume e o comando ls que você pode listar o host da VM:
docker run --rm -it -v /: / vm-root alpino: borda ls -l / vm-raiz
Depois disso, tente:
docker run --rm -it -v /: / vm-root alpino: borda ls -l / vm-raiz / var / lib / docker
Agora, você pode listar a pasta docker do host da VM
Eu uso o boot2docker for Docker no Mac OSX, para que as imagens sejam armazenadas no /Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
.
Só posso responder a esta pergunta para usuários do Ubuntu:
O diretório raiz do docker pode ser encontrado quando você executa o comando docker info
O diretório do Docker será fornecido nesta linha: " Docker Root Dir: /var/lib/docker
"
Sobre as imagens da janela de encaixe, elas são armazenadas dentro do diretório da janela de encaixe:
/var/lib/docker/aufs/diff/
Lembre-se de que essas coisas não são as mesmas em todas as versões do docker. Atualmente, estou usando a 1.12.3.
Use o docker info
comando para exibir informações em todo o sistema e o local pode variar.
Dependendo do driver de armazenamento em uso, informações adicionais podem ser mostradas, como nome do pool, arquivo de dados, arquivo de metadados, espaço de dados usado, espaço de dados total, espaço de metadados usado e espaço total de metadados.
O arquivo de dados é onde as imagens são armazenadas e o arquivo de metadados é onde os metadados relativos a essas imagens são armazenados. Quando executado pela primeira vez, o Docker aloca uma certa quantidade de espaço para dados e espaço para metadados a partir do espaço disponível no volume em que
/var/lib/docker
está montado.
Aqui está o exemplo no Ubuntu (consulte Root Dir ):
$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...
E aqui está o exemplo no Travis CI (consulte Diretório raiz do Docker ):
$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...
Você pode usar o --format
parâmetro para extrair essas informações em um único arquivo, por exemplo
$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]
ou:
$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]
verifique a pasta docker em /var/lib
as imagens são armazenadas no local abaixo:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
. Observe também que esse é o caso devido ao fato de o mecanismo do Docker estar sendo usado overlay2
como driver de armazenamento.
Ambiente: Windows 10 Pro, borda do docker desktop 2.0.3.0
clique com o botão direito do mouse no ícone da janela de encaixe na bandeja do sistema, selecione configurações - avançado:
Localização da imagem do disco (editável pelo navegador):
C: \ Usuários \ Público \ Documentos \ Hyper-V \ Discos Virtuais \ DockerDesktop.vhdx
(está lá - o diretório Documents está oculto)
docker build
comando?
No Fedora, o Docker usa o LVM para armazenamento, se disponível. No meu sistema docker info
mostra:
Storage Driver: devicemapper
Pool Name: vg01-docker--pool
Pool Blocksize: 524.3 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file:
Metadata file:
Data Space Used: 9.622 GB
...
Nesse caso, para aumentar o armazenamento, você precisará usar ferramentas de linha de comando do LVM ou gerenciadores de partição compatíveis, como o blivet .
No Windows 2016, a janela de encaixe (DockerMsftProvider) usa a pasta "windowsfilter" na raiz da janela de encaixe
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
Ele usa a pasta "tmp" na raiz do docker para baixar os arquivos e exclui os arquivos após extrair os arquivos baixados na pasta "windowsfilter".
Não consegui resolver a questão com o Docker versão 18.09 no macos usando as respostas acima e tentei novamente.
A única solução real para mim foi usar esta docker-compose.yml
configuração:
version: '3.7'
...
services:
demo-service:
volumes:
- data-volume:/var/tmp/container-volume
volumes:
data-volume:
driver: local
driver_opts:
type: none
o: bind
device: /tmp/host-volume
Após o lançamento com docker-compose up
, finalmente tive /tmp/host-volume
dos macos compartilhados como volume gravável de dentro do contêiner:
> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem 1K-blocks Used Available Use% Mounted on
...
osxfs 488347692 464780044 21836472 96% /var/tmp/container-volume
Espero que isso ajude os outros também.
De acordo com o Guia de introdução do Docker, "sua imagem criada" está "no registro de imagens do Docker local da sua máquina".
Isso ainda é estranho para mim, porque agora isso leva à questão. Onde está o registro de imagens Docker local da minha máquina?
No entanto, eu definitivamente acho que vale a pena compartilhar essas informações como resposta.
Se alguém precisar para fins de script, aqui está uma solução de uma linha.
No shell POSIX, com o PCRE ativado grep
, tente:
DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
No PowerShell:
$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"
Observe que, no Windows 10 (a partir de 10.0.18999.1
), nas configurações padrão, ele retorna:
C:\ProgramData\Docker
no modo "contêineres do Windows"/var/lib/docker
, no modo "contêineres Linux"DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
, mas no final é um arquivo, não um diretório
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
liste o conteúdo deste diretório.