Docker CLI を使用した、Azure のコンテナー レジストリへの最初のイメージのプッシュ

Docker Hub で公開 Docker コンテナー イメージを格納するように、Azure Container Registry ではプライベート コンテナー イメージとその他の成果物を格納および管理します。 コンテナー レジストリに対するログインプッシュプルなどのコンテナー イメージ操作には、Docker コマンド ライン インターフェイス (Docker CLI) を使用できます。

以下の手順では、公開 Nginx イメージをダウンロードし、プライベート Azure Container Registry にタグ付けしてレジストリにプッシュした後、レジストリからもう一度プルします。

前提条件

  • Azure コンテナー レジストリ - コンテナー レジストリは、Azure サブスクリプションに作成します。 たとえば、Azure portalAzure CLI、または Azure PowerShell を使用します。
  • Docker CLI - Docker もローカルにインストールする必要があります。 Docker では、macOSWindows、または Linux システムで Docker を簡単に構成できるパッケージが提供されています。

レジストリへのログイン

プライベート コンテナー レジストリで認証するさまざまな方法があります。

コマンド ラインで作業するときに推奨される方法は、Azure CLI コマンドの az acr loginを使用することです。 たとえば、myregistry という名前のレジストリにアクセスするには、Azure CLI にサインインし、レジストリに対して認証を行います。

az login
az acr login --name myregistry

docker login でログインすることもできます。 たとえば、オートメーション シナリオで、レジストリにサービス プリンシパルを割り当てることができます。 次のコマンドを実行するときは、サービス プリンシパルの appID (ユーザー名) とパスワードの入力を求められたら、対話形式で入力します。 ログイン資格情報の管理のベスト プラクティスについては、docker login コマンドのリファレンスを参照してください。

docker login myregistry.azurecr.io

どちらのコマンドも、完了すると Login Succeeded が返されます。

Note

  • Docker 拡張機能を備えた Visual Studio Code を使用すると、ログインがより高速かつ便利になります。

ヒント

docker login を使用する場合とレジストリにプッシュするために画像にタグ付けする場合は、常にレジストリの完全修飾名 (すべて小文字) を指定してください。 この記事の例では、完全修飾名は myregistry.azurecr.io です。

公開 Nginx イメージをプルする

まず、公開 Nginx イメージをローカル コンピューターにプルします。 この例では、公式の Nginx イメージをプルします。

docker pull nginx

コンテナーをローカルで実行する

次の docker run コマンドを実行して、Nginx コンテナーのローカル インスタンスを 対話形式でポート 8080 で起動します (-it)。 --rm 引数は、コンテナーが停止されたときに、それを削除するように指定します。

docker run -it --rm -p 8080:80 nginx

http://localhost:8080 に移動して、実行中のコンテナーの Nginx によって提供される既定の Web ページを表示します。 次のようなページが表示されます。

ローカル コンピューター上の Nginx

-it を指定して対話形式でコンテナーを開始したため、ブラウザーでそれに移動すると、コマンド ラインに Nginx サーバーの出力が表示されます。

コンテナーを停止して削除するには、Control+C を押します。

イメージのエイリアスを作成する

docker tag でレジストリへの完全修飾パスを使用して、イメージのエイリアスを作成します。 この例では、レジストリのルートが煩雑にならないように、samples 名前空間を指定しています。

docker tag nginx myregistry.azurecr.io/samples/nginx

名前空間を持つタグ付けの詳細については、「Azure Container Registry のベスト プラクティス」の「リポジトリの名前空間」セクションを参照してください。

イメージをレジストリにプッシュする

これで、完全修飾パスを使用してイメージにプライベート レジストリへのタグが付けられたので、docker push を使用してレジストリにプッシュできます。

docker push myregistry.azurecr.io/samples/nginx

レジストリからイメージをプルする

レジストリからイメージをプルするには、docker pull コマンドを使用します。

docker pull myregistry.azurecr.io/samples/nginx

Nginx コンテナーを起動する

レジストリからプルしたイメージを実行するには、docker run コマンドを使用します。

docker run -it --rm -p 8080:80 myregistry.azurecr.io/samples/nginx

ブラウザーで http://localhost:8080 に移動して、実行中のコンテナーを表示します。

コンテナーを停止して削除するには、Control+C を押します。

イメージを削除する (任意指定)

Nginx イメージが不要になった場合は、docker rmi コマンドを使用して、ローカルに削除できます。

docker rmi myregistry.azurecr.io/samples/nginx

Azure Container Registry からイメージを削除するには、Azure CLI コマンド az acr repository delete を使用できます。 たとえば、次のコマンドは、samples/nginx:latest タグによって参照されるマニフェスト、固有のレイヤー データ、およびそのマニフェストを参照するその他すべてのタグを削除します。

az acr repository delete --name myregistry --image samples/nginx:latest

Recommendations

認証オプションの詳細については、こちらを参照してください。

次のステップ

基本を理解したので、レジストリの使用を開始する準備ができました。 たとえば、レジストリから次の宛先にコンテナー イメージをデプロイします。

Azure Container Registry を操作するには、必要に応じて Visual Studio Code 用の Docker 拡張機能Azure アカウント拡張機能をインストールします。 Azure コンテナー レジストリとの間でイメージをプルおよびプッシュしたり、ACR タスクを実行したりします。すべて Visual Studio Code 内で実行します。