Dockerを非常に便利なものにしていることの1つは、Docker の中央レジストリである中央の場所からすぐに使用できるイメージをプルするのがいかに簡単かということです。 独自のイメージ (または リポジトリ としてのタグ付きイメージのコレクション) を同じパブリック レジストリに プッシュするのも同様に簡単で、新しく Docker 化されたサービスを誰もが利用できるようになります。
ただし、リポジトリには独自のコードや機密情報が含まれているため、リポジトリを世界と共有できない場合があります。 本日は、独自のレジストリでリポジトリを共有する簡単な方法を導入して、リポジトリへのアクセスを制御しながら、複数のDockerデーモン間でリポジトリを共有できるようにします。 レジストリがパブリックかプライベートかを決定できます。
この新機能を使用するには、 最新バージョンの Docker (>=0.5.0) が必要であり、このバージョンをデーモンとクライアントの両方として実行する必要があります。 また、Docker レジストリ コードも必要です。
プッシュとプルの使用
中央レジストリからリポジトリをプッシュおよびプルするデフォルトの方法は変更されていません。
# ubuntu ベースイメージをプルします。 Docker pull Ubuntu #ヒパッチの画像をプッシュします(サマルバの場合! Docker push samalba/hipache
暗黙のうちにそれ push
と pull
それぞれが中央レジストリにアクセスします、 index.docker.io
したがって、デフォルトの動作では何も変更されておらず、すべての 例が 引き続き機能します。
今新機能! 独自の レジストリにプッシュまたはプルするには、レジストリの場所をリポジトリ名に追加するだけです。それはの my.registry.address:port/repositoryname
ようになります.
リポジトリ "ubuntu"をローカルマシンで実行されるローカルレジストリのポート5000にプッシュしたいとします。
#まず、「ubuntu」リポジトリがあることを確認します。 Docker pull Ubuntu #次に、ubuntuリポジトリに対応するイメージIDを見つけます ドッカーイメージ |グレップ ウブンツ |最新の正規表現 ubuntu最新の8dbd9e392a96 12週間前 263 MB (仮想 263 MB) # もう少しで!# タグを使用して、完全なレジストリの場所を持つリポジトリを作成します。# 場所はリポジトリ名の永続的な部分になります。docker tag 8dbd9e392a96 localhost.localdomain:5000/ubuntu#最後に、新しいリポジトリをホームの場所にプッシュします。docker push localhost.localdomain:5000/ubuntu
明らかに、レジストリサーバーがポート5000でローカルに応答しない場合、プッシュは失敗します。 このブログ投稿の最後に、独自のレジストリサーバーを起動する方法を簡単に説明します。
ここでは "." を含むドメインを使用していることに注意してください。 localhost.domain
Docker は "." のいずれかを検索します。(ドメイン区切り文字) または ":" (ポート区切り文字) を使用して、リポジトリ名の最初の部分がユーザー名ではなく場所であることを示します。 どちらか .localdomain
なしで持っていた場合 localhost
または :5000
(どちらでもかまいません)その場合、 localhost/ubuntu
samalba/hipache
Dockerはそれが localhost
ユーザー名であると信じます。その後、既定の中央レジストリにプッシュしようとします。 最初の部分にドットまたはコロンがあると、この名前にホスト名が含まれていること、および代わりに指定された場所にプッシュする必要があることをDockerに伝えます。
レジストリを(サーバー上またはローカルに)インストールします
Docker-RegistryはシンプルなPythonアプリで、 インストールは簡単です。
git クローン https://github.com/dotcloud/docker-registry.git cd ドッカーレジストリ cp config_sample.yml config.yml pip インストール -r の要件.txt gunicorn --access-logfile - --log-level debug --debug -b 0.0.0.0:5000 -w 1 wsgi:application
レジストリは、開発フレーバーでローカルホスト(ポート5000)で実行され、ローカルストレージを使用しています。 明らかに、本番環境では、ポート443(またはローカルネットワークでは80)でレジストリを実行し、「registry.domain.tld」のようなホスト名でアクセスできるようにすることができます。 S3または他のストレージを使用するように指定します。