Tenho uma imagem do docker marcada como me/my-image
e tenho um repositório particular no dockerhub chamado me-private
.
Quando pressiono me/my-image
, acabo sempre atingindo o repositório público.
Qual é a sintaxe exata para enviar especificamente minha imagem para meu repositório particular?
docker
docker-registry
Eugene Goldberg
fonte
fonte
Respostas:
Você precisa marcar sua imagem corretamente primeiro com o seu
registryhost
:Em seguida, o docker empurre usando a mesma tag.
Exemplo:
fonte
docker tag 518a41981a6a me-private.com/myPrivateImage && docker push me-private.com/myPrivateImage
docker login
primeiro e, em seguida,docker tag 518a41981a6a me-private/myPrivateImage
docker push me-private/myPrivateImage
Apenas três etapas simples:
docker login --username username
--password
que é recomendado, pois não o armazena no histórico de comandosdocker tag my-image username/my-repo
docker push username/my-repo
fonte
--password
bandeira se não quiser que sua senha apareça no histórico. isso solicitará.Primeiro, acesse sua conta do Docker Hub e faça o repo. Aqui está uma captura de tela da minha conta do Docker Hub:
Na foto, você pode ver meu repo é "chuangg"
Agora entre no repositório e torne-o privado clicando no nome da sua imagem. Então, para mim, cliquei em "chuangg / gene_commited_image" e depois fui em Configurações -> Tornar privado. Então eu segui as instruções na tela
COMO CARREGAR SUA IMAGEM DO DOCKER NO DOCKER HUB
Método # 1 = Empurrando sua imagem pela linha de comando (cli)
1)
docker commit <container ID> <repo name>/<Name you want to give the image>
Sim, acho que deve ser o ID do contêiner. Provavelmente não pode ser o ID da imagem.
Por exemplo =
docker commit 99e078826312 chuangg/gene_commited_image
2)
docker run -it chaung/gene_commited_image
3)
docker login --username=<user username> --password=<user password>
Por exemplo =
docker login --username=chuangg [email protected]
Sim, você precisa fazer o login primeiro. Efetue logout usando o "docker logout"
4)
docker push chuangg/gene_commited_image
Método # 2 = Enviando sua imagem usando pom.xml e linha de comando.
Observe que usei um perfil Maven chamado “build-docker”. Se você não quiser usar um perfil, basta remover os
<profiles>, <profile>, and <id>build-docker</id>
elementos.Dentro do pai pom.xml:
Comando do terminal do Docker para implantar a imagem do Docker (no diretório em que seu pom.xml está localizado) =
mvn clean deploy -Pbuild-docker docker:push
Observe que a diferença entre os métodos 2 e 3 é que o método 3 possui um extra
<execution>
para a implantação.Método # 3 = Usando o Maven para implantar automaticamente no Docker Hub
Adicione este material ao seu pom.xml pai:
Vá para o diretório C: \ Users \ Gene.docker \ e adicione-o ao seu arquivo config.json:
Agora, no seu Docker Quickstart Terminal, digite =
mvn clean install -Pbuild-docker
Para aqueles que não estão usando perfis Maven, basta digitar
mvn clean install
Aqui está a captura de tela da mensagem de sucesso:
Aqui está o meu pom.xml completo e uma captura de tela da minha estrutura de diretórios:
Aqui está o meu diretório Eclipse:
Aqui está o meu Dockerfile:
Erro comum nº 1:
Solução para o erro # 1 = Não sincronize a
<execution>
fase with maven deploy, pois o maven tenta implantar a imagem 2x e coloca um carimbo de data / hora no jar. Por isso eu usei<phase>install</phase>
.fonte
Se o registro do docker for privado e auto-hospedado , faça o seguinte:
Exemplo:
fonte
Existem duas opções:
Entre no hub e crie o repositório primeiro e marque-o como privado. Então, quando você passar para esse repositório, ele será privado. Essa é a abordagem mais comum.
faça login na sua conta do hub docker e acesse as configurações globais . Há uma configuração que permite definir qual é a sua visibilidade padrão para os repositórios que você envia. Por padrão, é definido como público, mas se você o alterar para privado, todos os seus repositórios que você enviar serão marcados como privados por padrão. É importante observar que você precisará ter repositórios particulares suficientes disponíveis em sua conta, caso contrário, o repositório será bloqueado até que você atualize seu plano.
fonte
docker push
comando. Mas se entendi corretamente a pergunta, nenhuma dessas respostas está correta e a postada acima por Ken Cochrane é a única que deve ser aceita.Crie um repositório no dockerhub:
$docker tag IMAGE_ID UsernameOnDockerhub/repoNameOnDockerhub:latest
$docker push UsernameOnDockerhub/repoNameOnDockerhub:latest
Nota : aqui "repoNameOnDockerhub": o repositório com o nome que você está mencionando deve estar presente no dockerhub
"mais recente": é apenas tag
fonte
Ref: dock.docker.com
Este tópico fornece informações básicas sobre a implantação e configuração de um registro
Execute um registro local
Antes de implantar um registro, você precisa instalar o Docker no host.
Use um comando como o seguinte para iniciar o contêiner do registro:
start_registry.sh
Copie uma imagem do Docker Hub para seu registro
Puxe a
ubuntu:16.04
imagem do Docker Hub.Marque a imagem como
localhost:5000/my-ubuntu
. Isso cria uma marca adicional para a imagem existente. Quando a primeira parte da tag é um nome de host e uma porta, o Docker interpreta isso como o local de um registro, ao pressionar.Envie a imagem para o registro local em execução em
localhost:5000
:Remova as imagens armazenadas em cache localmente. Isso não remove a
localhost:5000/my-ubuntu
imagem do seu registro.Puxe a
localhost:5000/my-ubuntu
imagem do seu registro local.De acordo com docs.docker.com , isso é muito inseguro e não é recomendado .
Edite o
daemon.json
arquivo, cuja localização padrão é/etc/docker/daemon.json
no Linux ouC:\ProgramData\docker\config\daemon.json
no Windows Server. Se você usarDocker for Mac
ouDocker for Windows
, clique emDocker icon -> Preferences -> Daemon
, adicione oinsecure registry
.Se o
daemon.json
arquivo não existir, crie-o. Supondo que não haja outras configurações no arquivo, ele deve ter o seguinte conteúdo:Com registros inseguros ativados, o Docker executa as seguintes etapas:
Reinicie o Docker para que as alterações entrem em vigor.
fonte
Primeiro, faça login no seu repositório privado.
por exemplo:
E depois marque sua imagem para seu repositório privado
por exemplo:
Por fim, envie suas imagens em ordem para o seu repositório privado
por exemplo:
Referência
fonte
Solução de trabalho simples:
Vá aqui
https://hub.docker.com/
para criar um repositório PRIVADO com nome, por exemplo,johnsmith/private-repository
este é o queNAME/REPOSITORY
você usará para sua imagem ao criar a imagem.Primeiro,
docker login
Segundo, eu uso "
docker build -t johnsmith/private-repository:01 .
" (onde 01 é o nome da minha versão) para criar a imagem e "docker images
" para confirmar a imagem criada, como nesta caixa amarela abaixo: (desculpe, não posso colar o formato da tabela, mas apenas a string de texto )docker push johnsmith/private-repository:01
(seu repositório particular será aqui exemplo https://hub.docker.com/r/johnsmith/private-repository/ )Feito!
fonte