Como enviar uma imagem do docker para um repositório privado

Tenho uma imagem do docker marcada como eu / a minha imagem, e tenho um relatório privado sobre o dockerhub chamado Eu-private. Quando empurro a minha imagem, acabo sempre a bater no repo público.

Qual é a sintaxe exacta para empurrar especificamente a minha imagem para o meu repo privado?

Author: luchaninov, 2015-02-05

8 answers

Primeiro tem de marcar correctamente a sua imagem com a sua registryhost:

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

Depois acoplar com a mesma etiqueta.

docker push NAME[:TAG]

Exemplo:

docker tag 518a41981a6a myRegistry.com/myImage
docker push myRegistry.com/myImage
 383
Author: Abdullah Jibaly, 2017-07-14 16:36:55
Apenas três passos simples:
  1. docker login --username username --password password

  2. docker tag my-image username/my-repo

  3. docker push username/my-repo

 131
Author: Abhishek Dasgupta, 2017-05-22 10:12:05
Primeiro Vai à tua conta Docker Hub e faz o repo. Aqui está uma imagem da minha conta Docker Hub: enter image description here Do pic, podes ver que o meu repo é "Chuang". Agora vá para o repo e torne-o privado clicando no nome da sua imagem. Então, para mim, eu clicei em "Chuang/gene_commited_image", então eu fui para a configuração -> tornar privado. Depois segui as instruções no ecrã. enter image description here COMO ENVIAR A SUA IMAGEM DO ACOPLADOR PARA O ACOPLADOR HUB

Método #1 = empurrar a sua imagem através da linha de comandos (cli)

1) docker commit <container ID> <repo name>/<Name you want to give the image>

Sim, acho que tem de ser a identificação do contentor. 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, tens de te autenticar primeiro. Sair usando o "registo do' docker '

4) docker push chuangg/gene_commited_image

Método #2 = empurrar a sua imagem usando pom.xml e linha de comandos.

Nota, usei um perfil Maven chamado "build-docker". Se não quiser usar um perfil, basta remover os elementos <profiles>, <profile>, and <id>build-docker</id>. Dentro do pom pai.xml:
<profiles>
        <profile>
            <id>build-docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.18.1</version>
                        <configuration>
                            <images>
                                <image>
                                    <name>chuangg/gene_project</name>
                                    <alias>${docker.container.name}</alias>
                                    <!-- Configure build settings -->
                                    <build>
                                        <dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
                                        <assembly>
                                            <inline>
                                                <fileSets>
                                                    <fileSet>
                                                        <directory>${project.basedir}\target</directory>
                                                        <outputDirectory>.</outputDirectory>
                                                        <includes>
                                                            <include>*.jar</include>
                                                        </includes>
                                                    </fileSet>
                                                </fileSets>
                                            </inline>
                                        </assembly>
                                    </build>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>docker:build</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

Comando terminal do acoplador para implantar a imagem do acoplador (a partir da pasta onde o seu pom.o xml está localizado)= mvn clean deploy -Pbuild-docker docker:push

Nota, a diferença entre o Método #2 e #3 é que o Método #3 tem um <execution> extra para a implantação.

Método #3 = Usando o Maven para implantar automaticamente no acoplador Hub

Adiciona isto ao teu pai.xml:
    <distributionManagement>
        <repository>
            <id>gene</id>
            <name>chuangg</name>
            <uniqueVersion>false</uniqueVersion>
            <layout>legacy</layout>
            <url>https://index.docker.io/v1/</url>
        </repository>
    </distributionManagement>


    <profiles>
        <profile>
            <id>build-docker</id>
            <build>
                <plugins>

                    <plugin>
                        <groupId>io.fabric8</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>0.18.1</version>
                        <configuration>
                            <images>
                                <image>
                                    <name>chuangg/gene_project1</name>
                                    <alias>${docker.container.name}</alias>
                                    <!-- Configure build settings -->
                                    <build>
                                        <dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
                                        <assembly>
                                            <inline>
                                                <fileSets>
                                                    <fileSet>
                                                        <directory>${project.basedir}\target</directory>
                                                        <outputDirectory>.</outputDirectory>
                                                        <includes>
                                                            <include>*.jar</include>
                                                        </includes>
                                                    </fileSet>
                                                </fileSets>
                                            </inline>
                                        </assembly>
                                    </build>
                                </image>
                            </images>
                        </configuration>
                        <executions>
                            <execution>
                                <id>docker:build</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>docker:push</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>push</goal>
                                </goals>
                            </execution>

                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

Vá para C:\Users\Gene.Docker\ directory e adicione isto à sua configuração.ficheiro json: enter image description here

Agora no seu tipo de Terminal de arranque rápido do acoplador= mvn clean install -Pbuild-docker

Para aqueles que não usam perfis Maven, basta digitar mvn clean install

Aqui está a imagem da mensagem de sucesso: enter image description here Aqui está o meu pom completo.xml e uma imagem da minha pasta estrutura:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.gene.app</groupId>
<artifactId>VendingMachineDockerMavenPlugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Maven Quick Start Archetype</name>
<url>www.gene.com</url>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.gene.sample.Customer_View</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>

                    <source>1.7</source>
                    <target>1.7</target>

                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>


<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>

</dependencies>

<distributionManagement>
    <repository>
        <id>gene</id>
        <name>chuangg</name>
        <uniqueVersion>false</uniqueVersion>
        <layout>legacy</layout>
        <url>https://index.docker.io/v1/</url>
    </repository>
</distributionManagement>


<profiles>
    <profile>
        <id>build-docker</id>
        <properties>
            <java.docker.version>1.8.0</java.docker.version>
        </properties>
        <build>
            <plugins>

                <plugin>
                    <groupId>io.fabric8</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.18.1</version>
                    <configuration>
                        <images>
                            <image>
                                <name>chuangg/gene_project1</name>
                                <alias>${docker.container.name}</alias>
                                <!-- Configure build settings -->
                                <build>
                                    <dockerFileDir>${project.basedir}\src\docker\vending_machine_emulator</dockerFileDir>
                                    <assembly>
                                        <inline>
                                            <fileSets>
                                                <fileSet>
                                                    <directory>${project.basedir}\target</directory>
                                                    <outputDirectory>.</outputDirectory>
                                                    <includes>
                                                        <include>*.jar</include>
                                                    </includes>
                                                </fileSet>
                                            </fileSets>
                                        </inline>
                                    </assembly>
                                </build>
                            </image>
                        </images>
                    </configuration>
                    <executions>
                        <execution>
                            <id>docker:build</id>
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>docker:push</id>
                            <phase>install</phase>
                            <goals>
                                <goal>push</goal>
                            </goals>
                        </execution>

                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
Aqui está o meu directório do Eclipse.: enter image description here Aqui está o meu ficheiro de Dockerfile.
FROM java:8

MAINTAINER Gene Chuang
RUN echo Running Dockerfile in src/docker/vending_machine_emulator/Dockerfile directory

ADD maven/VendingMachineDockerMavenPlugin-1.0-SNAPSHOT.jar /bullshitDirectory/gene-app-1.0-SNAPSHOT.jar 

CMD ["java", "-classpath", "/bullshitDirectory/gene-app-1.0-SNAPSHOT.jar", "com/gene/sample/Customer_View" ] 

Erro Comum # 1: enter image description here

Solução para erro #1= não sincronize o <execution> com a fase de implantação do maven porque então o maven tenta implantar a imagem 2x e coloca uma data no frasco. Foi por isso que usei.

 40
Author: Gene, 2017-07-18 15:07:35

Se o seu registo de acoplagem for privado e se estiver hospedado {[5] } , deve fazer o seguinte:

docker login <REGISTRY_HOST>:<REGISTRY_PORT>
docker tag <IMAGE_ID> <REGISTRY_HOST>:<REGISTRY_PORT>/<APPNAME>:<APPVERSION>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/<APPNAME>:<APPVERSION>

Exemplo:

docker login repo.company.com:3456
docker tag 19fcc4aa71ba repo.company.com:3456/myapp:0.1
docker push repo.company.com:3456/myapp:0.1
 16
Author: Nicolas Delaforge, 2017-07-25 20:32:36

Primeiro autentique-se no seu repositório privado.

> docker login [OPTIONS] [SERVER]

[OPTIONS]: 
-u username 
-p password

Eg:

> docker login localhost:8080

E depois marca a tua imagem para o teu repositório privado

> docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Eg:

> docker tag myApp:v1 localhost:8080/myname/myApp:v1

Finalmente empurre as suas imagens enjauladas para o seu repositório privado

>docker push [OPTIONS] NAME[:TAG]

Eg:

> docker push localhost:8080/myname/myApp:v1

Referência

 3
Author: crane-yuan, 2017-09-01 03:39:24

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 NAME/REPOSITORY que irá usar para a sua imagem ao construir a imagem.

  • Primeiro, docker login

  • Em segundo lugar, eu uso " docker build -t johnsmith/private-repository:01 . "(onde o 01 é o meu nome de versão) para criar imagem, e eu uso "docker images " para confirmar a imagem criada, como neste campo amarelo abaixo: (desculpe, não posso colar o formato da tabela, mas apenas o texto de texto)

Johnsmith/private-repository (REPOSITORY) 01 (TAG) c5f4a2861d6e(ID da imagem) 2 days ago (CREATED) 305MB (SIZE)

Feito!
 3
Author: Dung, 2017-09-18 15:07:31

Ref: dock.docker.com

Este tópico fornece informações básicas sobre a implantação e configuração de um registo

Gerir um registo local

Antes de poder instalar um registo, tem de instalar o Docker no servidor.

Use um comando como o seguinte para iniciar o contentor do registo:

start_registry.sh

#!/bin/bash

docker run -d \
  -p 5000:5000 \
  --restart=always \
  --name registry \
  -v /data/registry:/var/lib/registry \
  registry:2
Copie uma imagem do Docker Hub para o seu registo.
  1. Puxe a imagem ubuntu:16.04 do Docker Hub.

    $ docker pull ubuntu:16.04
    
  2. Marca a imagem como localhost:5000/my-ubuntu. Isto cria uma marca adicional para a imagem existente. Quando a primeira parte da tag é um nome de máquina e porta, o Docker interpreta isso como a localização de um registro, ao empurrar.

    $ docker tag ubuntu:16.04 localhost:5000/my-ubuntu
    
  3. Empurre a imagem para o registo local em localhost:5000:

    $ docker push localhost:5000/my-ubuntu
    
  4. Remova as imagens em 'cache' local. Isto não remove a imagem localhost:5000/my-ubuntu do seu registro.

    $ docker image remove ubuntu:16.04
    $ docker image remove localhost:5000/my-ubuntu
    
  5. Retire a imagem localhost:5000/my-ubuntu do seu registo local.

    $ docker pull localhost:5000/my-ubuntu
    
Implantar um registo HTTP simples

De Acordo com docs.docker.com, esse é muito inseguro e é não recomendado.

  1. Edite o ficheiro daemon.json, cuja localização por omissão é /etc/docker/daemon.json no Linux ou C:\ProgramData\docker\config\daemon.json no servidor do Windows. Se utilizar Docker for Mac ou Docker for Windows, carregue em Docker icon -> Preferences -> Daemon, adicione o insecure registry.

    Se o ficheiro daemon.json não existir, cria-o. Assumindo que não existem outras configurações no arquivo, ele deve ter o seguinte conteúdo:

    {
      "insecure-registries" : ["myregistrydomain.com:5000"]
    }
    

    Com registos inseguros activados, o acoplador passa pelos seguintes passos:

      Primeiro, tente usar HTTPS.
      • Se o HTTPS estiver disponível mas o certificado for inválido, ignore o erro acerca do certificado.
      • Se o HTTPS não estiver disponível, volte para HTTP.
  2. Reiniciar o acoplador para as alterações a tomar efeito.

 2
Author: David Ding, 2018-05-21 02:12:49