このトピックでは、docker login、docker pull、docker push など、Docker での最も一般的な操作について説明します。 また、Container Registry Enterprise Edition インスタンスにログインする方法についても説明します。 Docker イメージの基本操作に慣れると、Container Registry をより効果的に使用できます。
背景情報
Container Registry を使用する前に、Docker をインストールする必要があります。 詳細については、「Docker をインストールする」をご参照ください。
Container Registry Enterprise Edition インスタンスが作成されます。 詳細については、「Container Registry Enterprise Edition インスタンスを使用してイメージをプッシュおよびプルする」トピックの「ステップ 1: Container Registry Enterprise Edition インスタンスを作成する」セクションをご参照ください。
docker login
このセクションでは、Container Registry Enterprise Edition インスタンスにログインする方法の例を示します。 この例では、インスタンスは中国 (杭州) リージョンにあります。
Container Registry Enterprise Edition インスタンスのドメイン名を指定し、ユーザー名とログインパスワードを入力します。
説明<Container Registry Enterprise Edition インスタンス名>-registry.cn-hangzhou.cr.aliyuncs.com
アクセス制御コンテナレジストリ コンソール コマンドを実行して、Enterprise Edition インスタンスにアクセスできます。 ドメイン名の例: 。 Enterprise Edition インスタンスのドメイン名は、 のインスタンスの [アクセス制御] ページで取得できます。ログインパスワードは、Alibaba Cloud アカウントのパスワードとは異なります。 ログインパスワードを設定する必要があります。 ログインパスワードの設定方法については、「Container Registry Enterprise Edition インスタンスのアクセス認証情報を構成する」をご参照ください。
Container Registry Enterprise Edition インスタンスにログインすると、
Login Succeeded
と表示されます。docker login <Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com Username: ****@test.com Password: Login Succeeded
config.json ファイルを表示して、ログイン情報を確認します。
サンプルコマンド:
cat ~/.docker/config.json
期待される出力:
{ "auths": { "<Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com": { "auth": "****" } } }
docker pull
docker pull コマンドを実行して、Docker イメージをプルできます。 次の例では、<Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent:0.8
イメージがプルされます。
サンプルコマンド:
docker pull <Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent:0.8
期待される出力:
0.8: Pulling from acs/agent
5a026b6c4964: Already exists
e4b621e8d9cb: Already exists
8bc2fd04bdd4: Pull complete
a977b0087b3e: Pull complete
8f6e00ea13c6: Pull complete
875dd8c9666f: Pull complete
9c07bcabc35d: Pull complete
Digest: sha256:cac848bd31bccf2a041bda7b57e3051341093abde6859df9ee9d332dfec6ddd9
Status: Downloaded newer image for <Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent:0.8
Container Registry Enterprise Edition インスタンスにログインするために使用するドメイン名は、イメージにアクセスするために使用するドメイン名と同じである必要があります。 たとえば、
<Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com
ドメイン名にログインして、<Enterprise Edition インスタンス名>-registry.cn-beijing.cr.aliyuncs.com
ドメイン名からイメージをプルおよびプッシュする場合、クライアントにエラーメッセージが表示されます。 エラーメッセージは、イメージにアクセスする権限がないことを示しています。Docker 公式 Web サイトからイメージをプルする場合は、「イメージタグをサブスクライブする」をご参照ください。
docker images
コマンドを実行して、プルされたイメージを表示できます。 コマンド出力のリポジトリの場所とイメージタグを確認します。
docker images
期待される出力:
REPOSITORY TAG IMAGE ID CREATED SIZE
<Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent 0.8 b9ba5841bdb0 24 hours ago 42.18 MB
docker push
オンプレミスイメージをビルドまたはパッケージ化したら、Container Registry Enterprise Edition インスタンスにプッシュできます。
イメージをプッシュするための準備は、基本的にイメージをプルするための準備と同じです。 リポジトリに対する権限を持っていることを確認してください。 そうしないと、docker push コマンドを実行した後にエラーメッセージが返されます。
サンプルコマンド:
docker push <Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent:0.8
期待される出力:
The push refers to a repository [<Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com/acs/agent:0.8]
359f80267111: Layer already exists
7e5fa28d90b8: Layer already exists
b20d7f600f63: Layer already exists
4a159b4f8370: Layer already exists
7c3712ebe877: Layer already exists
d91d130a53aa: Layer already exists
fcad8ad5a40f: Layer already exists
unauthorized: authentication required
RAM ユーザーを使用して Container Registry Enterprise Edition インスタンスにログインする
RAM ユーザーとして Container Registry コンソールにログインします。 [アクセス認証情報] ページで、ログインパスワードを設定します。
ログインユーザー名として
<RAM ユーザー名>@<エンタープライズ エイリアス>
を使用します。Alibaba Cloud アカウントのエンタープライズ エイリアスは、RAM コンソールで設定および表示できます。 エンタープライズ エイリアスがない場合、エンタープライズ エイリアスはデフォルトで Alibaba Cloud アカウントの UID になります。
RAM ユーザーが
subaccount
で、エンタープライズ エイリアスがaccount-alias
であるとします。 次のサンプルコードは、ログインの例を示しています。docker login <Container Registry Enterprise Edition インスタンスの名前>-registry.cn-hangzhou.cr.aliyuncs.com Username: subaccount@account-alias Password: Login Succeeded