とタグ付けさme/my-image
れたdockerイメージがあり、という名前のdockerhubにプライベートリポジトリがありme-private
ます。
をプッシュすると、me/my-image
常にパブリックリポジトリにアクセスすることになります。
イメージをプライベートリポジトリに具体的にプッシュするための正確な構文は何ですか?
とタグ付けさme/my-image
れたdockerイメージがあり、という名前のdockerhubにプライベートリポジトリがありme-private
ます。
をプッシュすると、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
docker tag 518a41981a6a me-private.com/myPrivateImage && docker push me-private.com/myPrivateImage
docker login
:、その後、あなたのイメージ最初のタグdocker tag 518a41981a6a me-private/myPrivateImage
:プッシュdocker push me-private/myPrivateImage
たった3つの簡単なステップ:
docker login --username username
--password
コマンド履歴に保存されないため、推奨されないパスワードを省略すると、パスワードの入力を求められますdocker tag my-image username/my-repo
docker push username/my-repo
--password
パスワードを履歴に表示したくない場合は、フラグをオフのままにします。プロンプトが表示されます。
まず、Docker Hubアカウントに移動して、リポジトリを作成します。これが私のDocker Hubアカウントのスクリーンショットです。
写真から、私のリポジトリが「chuangg」であることがわかります
次にリポジトリに移動し、画像の名前をクリックして非公開にします。それで、私は「chuangg / gene_commited_image」をクリックして、「設定」->「非公開にする」に行きました。次に、画面の指示に従いました
ドッカー画像をドッカーハブにアップロードする方法
方法#1 =コマンドライン(cli)を使用してイメージをプッシュする
1) docker commit <container ID> <repo name>/<Name you want to give the image>
はい、コンテナIDである必要があります。画像IDにすることはできません。
例= docker commit 99e078826312 chuangg/gene_commited_image
2) docker run -it chaung/gene_commited_image
3) docker login --username=<user username> --password=<user password>
例= docker login --username=chuangg --email=gc.genechaung@gmail.com
はい、最初にログインする必要があります。「docker logout」を使用してログアウトする
4) docker push chuangg/gene_commited_image
方法#2 = pom.xmlとコマンドラインを使用して画像をプッシュする。
注:「build-docker」というMavenプロファイルを使用しました。プロファイルを使用したくない場合は、<profiles>, <profile>, and <id>build-docker</id>
要素を削除してください。
親pom.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>
DockerイメージをデプロイするDockerターミナルコマンド(pom.xmlがあるディレクトリから)= mvn clean deploy -Pbuild-docker docker:push
方法#2と#3の違いは、方法#3には<execution>
展開用の追加機能があることです。
方法#3 = Mavenを使用してDocker Hubに自動的にデプロイする
次のものを親のpom.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>
C:\ Users \ Gene.docker \ディレクトリに移動し、これをconfig.jsonファイルに追加します。
Docker Quickstart Terminal type = mvn clean install -Pbuild-docker
Mavenプロファイルを使用していない場合は、次のように入力してください。 mvn clean install
これが私の完全なpom.xmlとディレクトリ構造のスクリーンショットです。
<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>
ここに私の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の解決策= <execution>
をmavenデプロイフェーズと同期しないでください。Mavenがイメージを2回デプロイしようとし、jarにタイムスタンプを配置するためです。それが私が使用し<phase>install</phase>
た理由です。
dockerレジストリがプライベートで自己ホストされている場合は、次の手順を実行する必要があります。
docker login <REGISTRY_HOST>:<REGISTRY_PORT>
docker tag <IMAGE_ID> <REGISTRY_HOST>:<REGISTRY_PORT>/<APPNAME>:<APPVERSION>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/<APPNAME>:<APPVERSION>
例:
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
2つのオプションがあります。
ハブに移動し、最初にリポジトリを作成し、それをプライベートとしてマークします。その後、そのレポにプッシュすると、プライベートになります。これが最も一般的なアプローチです。
docker hubアカウントにログインし、グローバル設定に移動します。プッシュするリポジトリのデフォルトの可視性を設定できる設定があります。デフォルトではパブリックに設定されていますが、プライベートに変更すると、プッシュするすべてのリポジトリがデフォルトでプライベートとしてマークされます。アカウントで十分なプライベートリポジトリを利用できるようにする必要があります。そうしないと、プランをアップグレードするまでリポジトリがロックされます。
docker push
コマンドに触れたりすることに専念しています。しかし、私が質問の正しさを理解した場合、これらの回答はどれも正しくなく、ケンコクランが上に投稿したものだけが受け入れられるべきものです。
dockerhubにリポジトリを作成します。
$docker tag IMAGE_ID UsernameOnDockerhub/repoNameOnDockerhub:latest
$docker push UsernameOnDockerhub/repoNameOnDockerhub:latest
注:ここで「repoNameOnDockerhub」:言及している名前のリポジトリはdockerhubに存在している必要があります
「最新」:ただのタグです
このトピックでは、レジストリの展開と構成に関する基本的な情報を提供します
レジストリをデプロイする前に、ホストにDockerをインストールする必要があります。
次のようなコマンドを使用して、レジストリコンテナを起動します。
start_registry.sh
#!/bin/bash
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /data/registry:/var/lib/registry \
registry:2
ubuntu:16.04
Docker Hubからイメージをプルします。
$ docker pull ubuntu:16.04
画像にのタグを付けlocalhost:5000/my-ubuntu
ます。これにより、既存の画像に追加のタグが作成されます。タグの最初の部分がホスト名とポートである場合、Dockerはプッシュ時にレジストリの場所としてこれを解釈します。
$ docker tag ubuntu:16.04 localhost:5000/my-ubuntu
で実行されているローカルレジストリにイメージをプッシュしますlocalhost:5000
。
$ docker push localhost:5000/my-ubuntu
ローカルにキャッシュされた画像を削除します。これはlocalhost:5000/my-ubuntu
、レジストリからイメージを削除しません。
$ docker image remove ubuntu:16.04
$ docker image remove localhost:5000/my-ubuntu
localhost:5000/my-ubuntu
ローカルレジストリからイメージをプルします。
$ docker pull localhost:5000/my-ubuntu
docs.docker.comによると、これは非常に安全ではなく、推奨されていません。
daemon.json
デフォルトの場所が/etc/docker/daemon.json
LinuxまたはC:\ProgramData\docker\config\daemon.json
Windows Serverであるファイルを編集します。Docker for Mac
またはを使用する場合はDocker for Windows
、をクリックしてDocker icon -> Preferences -> Daemon
、に追加しますinsecure registry
。
場合はdaemon.json
、ファイルが存在しない、それを作成します。ファイルに他の設定がないと仮定すると、ファイルには次の内容が含まれているはずです。
{
"insecure-registries" : ["myregistrydomain.com:5000"]
}
安全でないレジストリを有効にすると、Dockerは次の手順を実行します。
Dockerを再起動して変更を有効にします。
> docker login [OPTIONS] [SERVER]
[OPTIONS]:
-u username
-p password
例えば:
> docker login localhost:8080
> docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
例えば:
> docker tag myApp:v1 localhost:8080/myname/myApp:v1
>docker push [OPTIONS] NAME[:TAG]
例えば:
> docker push localhost:8080/myname/myApp:v1
シンプルな作業ソリューション:
ここhttps://hub.docker.com/
に移動して、名前を付けたプライベートリポジトリを作成します。たとえば、johnsmith/private-repository
これはNAME/REPOSITORY
イメージのビルド時にイメージに使用するものです。
最初、 docker login
次に、 " docker build -t johnsmith/private-repository:01 .
"(01はバージョン名)を使用してイメージを作成し、 " docker images
" を使用して、次の黄色のボックスなどに作成されたイメージを確認します(テーブルペーストはできませんが、テキスト文字列のみを貼り付けます) )
johnsmith / private-repository(REPOSITORY)01(TAG)c5f4a2861d6e(IMAGE ID)2日前(作成)305MB(SIZE)
docker push johnsmith/private-repository:01
(あなたのプライベートリポジトリはここの例ですhttps://hub.docker.com/r/johnsmith/private-repository/)できた!