Estou pensando onde as imagens do Docker são armazenadas exatamente na minha máquina host local. Posso compartilhar minha imagem do Docker sem usar a Docker-Hub
ou uma imagem de Dockerfile
Docker 'real'? E o que está acontecendo exatamente quando eu 'envio' minha Docker-Image ao Docker-Hub?
docker
docker-registry
yaquawa
fonte
fonte
Respostas:
As imagens do Docker são armazenadas como camadas do sistema de arquivos. Todo comando no Dockerfile cria uma camada. Você também pode criar camadas usando a
docker commit
partir da linha de comando após fazer algumas alterações (viadocker run
provavelmente).Essas camadas são armazenadas por padrão em
/var/lib/docker
. Embora você possa (teoricamente) escolher arquivos a partir de lá e instalá-los em um servidor docker diferente, provavelmente é uma má idéia brincar com a representação interna usada pelo Docker.Quando você envia sua imagem por push, essas camadas são enviadas para o registro (o registro do docker hub, por padrão ... a menos que você marque sua imagem com outro prefixo do registro) e armazenadas lá. Ao pressionar, o ID da camada é usado para verificar se você já possui a camada localmente ou precisa ser baixada. Você pode usar
docker history
para espreitar quais camadas (outras imagens) são usadas (e, até certo ponto, qual comando criou a camada).Quanto às opções para compartilhar uma imagem sem enviar para o registro do docker hub, suas melhores opções são:
docker save
uma imagem oudocker export
um contêiner. Isso produzirá um arquivo tar para a saída padrão, então você gostaria de fazer algo parecidodocker save 'dockerizeit/agent' > dk.agent.latest.tar
. Então você pode usardocker load
oudocker import
em um host diferente.Hospede seu próprio registro privado. - Desatualizado, ver comentários
Consulte a imagem do registro da janela de encaixe . Criamos um registro com suporte para s3, que você pode iniciar e parar conforme necessário (todo o estado é mantido no balde s3 de sua escolha), que é trivial para a configuração. Essa também é uma maneira interessante de observar o que acontece ao enviar para um registroUse outro registro como o quay.io (ainda não o testei pessoalmente), embora quaisquer preocupações que você tenha com o hub docker provavelmente se apliquem aqui também.
fonte
docker save
: quando envio uma imagem que deriva de outra imagem (digamospython:2.7
) para um registro, a imagem pai não precisa ser carregada mais de uma vez, a menos que seja alterada. Posso salvar imagens parciais para obter uma otimização de tamanho de arquivo semelhante? Estou pulando por cima disso porque sou um hobby com várias imagens e não quero pagar por um registro particular.docker build
no host?npm install
... Não consigo compilar no meu host porque ele tem muito pouca memória e essa etapa sempre falha (consulte: github.com/npm/npm/issues/5021 )Com base neste blog , é possível compartilhar uma imagem do docker sem um registro do docker executando:
Após a conclusão deste comando, é possível copiar a imagem para um servidor e importá-la da seguinte maneira:
fonte
O envio de uma imagem do docker para um servidor remoto pode ser feito em 3 etapas simples:
Localmente, use scp para transferir .tar para remoto
No servidor remoto, carregue a imagem na janela de encaixe:
fonte
Se você não quiser usar o próprio Docker Hub, poderá hospedar seu próprio repositório Docker no Artifactory by JFrog:
https://www.jfrog.com/confluence/display/RTF/Docker+Repositories
que será executado em seus próprios servidores.
Outros fornecedores de hospedagem estão disponíveis, por exemplo, CoreOS:
http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/
que comprou quay.io
fonte