独自のレジストリを使用する方法

Dockerを非常に便利なものにしていることの1つは、Docker の中央レジストリである中央の場所からすぐに使用できるイメージをプルするのがいかに簡単かということです。 独自のイメージ (または リポジトリ としてのタグ付きイメージのコレクション) を同じパブリック レジストリに プッシュするのも同様に簡単で、新しく Docker 化されたサービスを誰もが利用できるようになります。

ただし、リポジトリには独自のコードや機密情報が含まれているため、リポジトリを世界と共有できない場合があります。 本日は、独自のレジストリでリポジトリを共有する簡単な方法を導入して、リポジトリへのアクセスを制御しながら、複数のDockerデーモン間でリポジトリを共有できるようにします。 レジストリがパブリックかプライベートかを決定できます。

この新機能を使用するには、 最新バージョンの Docker (>=0.5.0) が必要であり、このバージョンをデーモンとクライアントの両方として実行する必要があります。 また、Docker レジストリ コードも必要です。

プッシュとプルの使用

中央レジストリからリポジトリをプッシュおよびプルするデフォルトの方法は変更されていません。

# ubuntu ベースイメージをプルします。
Docker pull Ubuntu

#ヒパッチの画像をプッシュします(サマルバの場合!
Docker push samalba/hipache

暗黙のうちにそれ pushpull それぞれが中央レジストリにアクセスします、 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.domainDocker は "." のいずれかを検索します。(ドメイン区切り文字) または ":" (ポート区切り文字) を使用して、リポジトリ名の最初の部分がユーザー名ではなく場所であることを示します。 どちらか .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または他のストレージを使用するように指定します。

サム・アルバについて

サム

dotCloudの最初のエンジニアリング採用者として、サムは2010年に最初のプライベートベータ版を出荷した小さなチームの一員でした。 それ以来、彼は世界中の何万人もの開発者のためにプラットフォームを数千万人のユニークビジターに拡大することに尽力し、その過程ですべての主要な機能とコンポーネントに彼の足跡を残してきました。 現在、dotCloudの最初のエンジニアリングディレクターとして、彼は急成長しているエンジニアリングチームを管理していますが、これは他のエンジニアがそうする必要がないように会議に参加していると言うこともできます。 会議に参加していないときは、HipacheやCirruxcache、その他のプロジェクトでも「-ache」で終わるなど、いくつかの人気のあるオープンソースプロジェクトを維持しています。 前世では、Akamai でフォーチュン 500 企業をサポートし、いくつかのスタートアップ企業で Web インフラストラクチャを構築し、INRIAの研究所で自動運転車用のソフトウェアを作成しました。

ツイッターでサムとつながりましょう! @sam_alba