プライベートリポジトリにDockerイメージをプッシュする方法

私はme/my-imageというタグのついたdockerイメージを持っており、me-privateという名前のプライベートリポジトリをdockerhub上に持っています。 私のme/my-imageをプッシュしても、結局いつも公開リポジトリにヒットしてしまいます。

自分のイメージをプライベートリポジトリにプッシュするには、どのような構文が必要でしょうか?

ソリューション

まず、あなたの registryhost で画像を正しくタグ付けする必要があります。

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

その後、同じタグを使ってdocker pushします。

docker push NAME[:TAG]

docker tag 518a41981a6a myRegistry.com/myImage
docker push myRegistry.com/myImage
解説 (8)

まずDocker Hubのアカウントにアクセスして、レポを作成します。以下は私のDocker Hubアカウントのスクリーンショットです。 .

このスクリーンショットから、私のレポが "chuangg "であることがわかります。

レポに入って、画像の名前をクリックしてプライベートにします。私の場合は、「chuangg/gene_commited_image」をクリックし、「設定 -> 非公開にする」に進みました。そして、画面の指示に従います。 .

docker hubにdockerイメージをアップロードする方法

**方法1=コマンドライン(cli)を使ってイメージをアップロードする。

  1. docker commit /

はい、コンテナIDでなければならないと思います。おそらくイメージIDではないと思います。

例えば= docker commit 99e078826312 chuangg/gene_commited_image のようになります。

  1. docker run -it chaung/gene_commited_image とする。

  2. docker login --username= --password=

例= docker login --username=chuangg --email=gc.genechaung@gmail.com

はい、最初にログインする必要があります。"docker logout "を使ったログアウト

  1. docker push chuangg/gene_commited_image を実行します。

**方法2=pom.xmlとコマンドラインを使ってイメージをプッシュする方法です。

ここでは、"build-docker "というMaven Profileを使用しています。プロファイルを使用したくない場合は、, , build-dockerの要素を削除してください。

親のpom.xmlの中。



            build-docker



                        io.fabric8
                        docker-maven-plugin
                        0.18.1



                                    chuangg/gene_project
                                    ${docker.container.name}


                                        ${project.basedir}\src\docker\vending_machine_emulator




                                                        ${project.basedir}\target
                                                        <outputDirectory>.

                                                            *.jar











                                docker:build
                                package

                                    build







pom.xmlが置かれているディレクトリからDocker ImageをデプロイするDocker Terminalコマンド=mvn clean deploy -Pbuild-docker docker:push.

なお、#2の方法と#3の方法の違いは、#3の方法ではデプロイのために``が追加されていることです。

方法#3= Mavenを使ってDocker Hubに自動的にデプロイする

この内容を親のpom.xmlに追加します。



            gene
            chuangg
            false
            legacy
            https://index.docker.io/v1/





            build-docker




                        io.fabric8
                        docker-maven-plugin
                        0.18.1



                                    chuangg/gene_project1
                                    ${docker.container.name}


                                        ${project.basedir}\src\docker\vending_machine_emulator




                                                        ${project.basedir}\target
                                                        <outputDirectory>.

                                                            *.jar











                                docker:build
                                package

                                    build



                                docker:push
                                install

                                    push









C:Users\Gene.docker\ディレクトリに移動し、config.jsonファイルに以下を追加します。 .

ここで、Docker Quickstart Terminal で type= mvn clean install -Pbuild-docker と入力します。

Maven Profilesを使っていない人は、mvn clean installと入力してください。

以下は成功メッセージのスクリーンショットです。 .

以下はpom.xmlの全文とディレクトリ構造のスクリーンショットです。


4.0.0

com.gene.app
VendingMachineDockerMavenPlugin
1.0-SNAPSHOT
jar

Maven Quick Start Archetype
www.gene.com





                org.apache.maven.plugins
                maven-jar-plugin



                            com.gene.sample.Customer_View





                org.apache.maven.plugins
                maven-compiler-plugin
                3.1


                    1.7
                    1.7









        junit
        junit
        4.8.2
        test






        gene
        chuangg
        false
        legacy
        https://index.docker.io/v1/





        build-docker

            1.8.0





                    io.fabric8
                    docker-maven-plugin
                    0.18.1



                                chuangg/gene_project1
                                ${docker.container.name}


                                    ${project.basedir}\src\docker\vending_machine_emulator




                                                    ${project.basedir}\target
                                                    <outputDirectory>.

                                                        *.jar











                            docker:build
                            package

                                build



                            docker:push
                            install

                                push








|project> これが私のEclipseディレクトリです。 .

これが私の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" ] 

コモンエラー#1です。 .

エラー#1の解決策= `をmavenのデプロイフェーズと同期させないでください。そうすると、mavenはイメージを2倍にデプロイしようとし、jarにタイムスタンプを付けるからです。これが、install`を使用した理由です。

解説 (0)

2つの選択肢があります。

1.ハブに入って、最初にリポジトリを作成し、それをプライベートとしてマークします。そうすると、そのリポジトリにプッシュすると、プライベートになります。これが最も一般的な方法です。

2.docker hubのアカウントにログインし、global settingsに行きます。そこには、プッシュしたリポジトリのデフォルトの可視性を設定することができる設定があります。デフォルトではpublicに設定されていますが、これをprivateに変更すると、プッシュするすべてのリポジトリがデフォルトでprivateとしてマークされます。アカウントに十分な数のプライベートリポジトリを用意しておかないと、プランをアップグレードするまでリポジトリがロックされてしまうことに注意してください。

解説 (2)