LoginSignup
6
1

More than 1 year has passed since last update.

ローカルの Dockerイメージ を Azure Container Registry(ACR)に プッシュしてみました

Posted at

概要

この記事 から始まる3つのステップで稼働させた一連のローカルDockerコンテナアプリのイメージを Azure Container Registry(ACR)にプッシュするまでの手順を説明します。
image.png

ローカル環境

macOS Big Sur 11.3
python 3.8.3

事前準備

この記事 を参考にして、AKS と ACR を構築していること。


コンテナイメージのプッシュ

Docker環境での動作確認

この記事 にあるように、ローカルのIoTデータ生成プログラムからのデータがGrafanaでリアルタムに表示されることを確認します。この状態のイメージを使用していきます(「docker-compose stop」の実行)。

コンテナIDの取得

$ docker ps -a

CONTAINER ID   IMAGE                                             COMMAND                  CREATED       STATUS                        PORTS     NAMES
b244ceea916e   confluentinc/cp-enterprise-control-center:6.0.0   "/etc/confluent/dock…"   2 hours ago   Exited (143) 37 seconds ago             control-center
05b3be2d1261   confluentinc/cp-ksqldb-cli:6.0.0                  "/bin/sh"                2 hours ago   Exited (0) 38 seconds ago               ksqldb-cli
bac53178ec6a   confluentinc/cp-ksqldb-server:6.0.0               "/etc/confluent/dock…"   2 hours ago   Exited (143) 34 seconds ago             ksqldb-server
4463b1c854a3   cp-connect-base:latest                            "/etc/confluent/dock…"   2 hours ago   Exited (143) 32 seconds ago             connect
93339b96092d   confluentinc/cp-schema-registry:6.0.0             "/etc/confluent/dock…"   2 hours ago   Exited (143) 30 seconds ago             schema-registry
94f49390c759   confluentinc/cp-server:6.0.0                      "/etc/confluent/dock…"   2 hours ago   Exited (137) 18 seconds ago             broker
d74cf86680bb   grafana/grafana                                   "/run.sh"                2 hours ago   Exited (0) 38 seconds ago               grafana
21167621d7e3   confluentinc/cp-zookeeper:6.0.0                   "/etc/confluent/dock…"   2 hours ago   Exited (143) 15 seconds ago             zookeeper
5075946da389   rabbitmq:3.8.17-management                        "docker-entrypoint.s…"   2 hours ago   Exited (0) 32 seconds ago               rabbitmq
aaaf61e234c6   influxdb:1.8.6                                    "/entrypoint.sh infl…"   2 hours ago   Exited (0) 36 seconds ago               influxdb

ACRログインサーバーアドレスの取得

$ ACR_LOGIN_SERVER=$(az acr list --resource-group $ACR_RES_GROUP --query "[].{acrLoginServer:loginServer}" --output tsv)

$ echo $ACR_LOGIN_SERVER
acr0ituru.azurecr.io

ACR ログインサーバアドレスでのコミット

$ docker commit 5075946da389 $ACR_LOGIN_SERVER/rabbitmq:3.8.17
$ docker commit d74cf86680bb $ACR_LOGIN_SERVER/grafana:8.0.6
$ docker commit aaaf61e234c6 $ACR_LOGIN_SERVER/influxdb:1.8.6
$ docker commit 4463b1c854a3 $ACR_LOGIN_SERVER/cp-connect-base:6.0.0
$ docker commit 94f49390c759 $ACR_LOGIN_SERVER/cp-server:6.0.0
$ docker commit b244ceea916e $ACR_LOGIN_SERVER/cp-control-center:6.0.0
$ docker commit 21167621d7e3 $ACR_LOGIN_SERVER/cp-zookeeper:6.0.0
$ docker commit bac53178ec6a $ACR_LOGIN_SERVER/cp-ksqldb-server:6.0.0
$ docker commit 05b3be2d1261 $ACR_LOGIN_SERVER/cp-ksqldb-cli:6.0.0
$ docker commit 93339b96092d $ACR_LOGIN_SERVER/cp-schema-registry:6.0.0


$ docker images | grep $ACR_LOGIN_SERVER

acr0ituru.azurecr.io/cp-connect-base                6.0.0               ab7c3ded2793   7 days ago   1.66GB
acr0ituru.azurecr.io/grafana                        8.0.6               7a91cc35d504   7 days ago   212MB
acr0ituru.azurecr.io/cp-schema-registry             6.0.0               651bacf2cb5c   7 days ago   1.33GB
acr0ituru.azurecr.io/cp-ksqldb-cli                  6.0.0               5c113d6adf2f   7 days ago   785MB
acr0ituru.azurecr.io/cp-ksqldb-server               6.0.0               0987ef6c7751   7 days ago   1.06GB
acr0ituru.azurecr.io/cp-zookeeper                   6.0.0               23253e3dbc5c   7 days ago   721MB
acr0ituru.azurecr.io/cp-control-center              6.0.0               99971d18b95d   7 days ago   995MB
acr0ituru.azurecr.io/cp-server                      6.0.0               1a00ecce9821   7 days ago   1.24GB
acr0ituru.azurecr.io/influxdb                       1.8.6               2ff29d3611c4   7 days ago   308MB
acr0ituru.azurecr.io/rabbitmq                       3.8.17              e99b3b21637f   7 days ago   324MB

ACRへのログイン(プッシュが失敗したときに)

$ az acr login --name $ACR_NAME
Login Succeeded

イメージをACRにプッシュ

$ docker push $ACR_LOGIN_SERVER/rabbitmq:3.8.17
$ docker push $ACR_LOGIN_SERVER/grafana:8.0.6
$ docker push $ACR_LOGIN_SERVER/influxdb:1.8.6
$ docker push $ACR_LOGIN_SERVER/cp-connect-base:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-server:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-control-center:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-zookeeper:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-ksqldb-server:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-ksqldb-cli:6.0.0
$ docker push $ACR_LOGIN_SERVER/cp-schema-registry:6.0.0

イメージ一覧の表示

$ az acr repository list --name $ACR_NAME --output table

Result
----------------------------
cp-connect-base
cp-control-center
cp-ksqldb-cli
cp-ksqldb-server
cp-schema-registry
cp-server
cp-zookeeper
grafana
influxdb
rabbitmq

まとめ

これで、Dockerイメージが全てACRに登録されました。


付録

イメージ詳細の確認

$ az acr repository show --name $ACR_NAME --repository rabbitmq

{
  "changeableAttributes": {
    "deleteEnabled": true,
    "listEnabled": true,
    "readEnabled": true,
    "teleportEnabled": false,
    "writeEnabled": true
  },
  "createdTime": "2021-07-30T00:41:56.1995854Z",
  "imageName": "rabbitmq",
  "lastUpdateTime": "2021-07-30T00:41:56.3674178Z",
  "manifestCount": 1,
  "registry": "acr0ituru.azurecr.io",
  "tagCount": 1
}

イメージタグの確認

az acr repository show-tags -n $ACR_NAME --repository rabbitmq --output table

Result
--------
3.8.17

イメージの削除

$ az acr repository delete --name $ACR_NAME --repository rabbitmq
Are you sure you want to delete the repository 'rabbitmq' and all images under it? (y/n): y

レジストリ サイズの管理

$ az acr show-usage --resource-group $ACR_RES_GROUP --name $ACR_NAME --output table

NAME      LIMIT         CURRENT VALUE    UNIT
--------  ------------  ---------------  ------
Size      107374182400  3043966295       Bytes
Webhooks  10            0                Count

番外編

イメージを ACR に 直接build する方法

例)connect のコンテナイメージを ACR に build します

$ az acr build --registry $ACR_NAME --image cp-connect-base:latest docker/
<docker/Dockerfile>

FROM confluentinc/cp-server-connect-base:6.0.0
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-rabbitmq:latest
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-influxdb:latest

超番外編

RabbitMQ - Management Plugin による JSON を用いた一括設定

起動時に JSON ファイルを読み込んで Queue などの作成・設定を一括で行う機能が Management Plugin に備わっています。

rabbitmqに接続します。該当ディレクトリに移動します。

$ docker exec -it rabbitmq /bin/bash
root@rabbitmq:/# apt-get update
root@rabbitmq:/# apt-get install vim
root@rabbitmq:/# cd /etc/rabbitmq

「rabbitmq.conf」に以下の設定を追加します。

/etc/rabbitmq/rabbitmq.conf
management.load_definitions = /etc/rabbitmq/cp_definitions.json

設定 JSON ファイル

cp_definitions.json

{
    "rabbit_version": "3.8.17",
    "rabbitmq_version": "3.8.17",
    "product_name": "RabbitMQ",
    "product_version": "3.8.17",
    "users": [
        {
            "name": "hogehoge",
            "password_hash": "fhjanfeodvyaer;85sdZzHvqyIWg9Yqpe3vtU8s5YTXWk27e",
            "hashing_algorithm": "rabbit_password_hashing_sha256",
            "tags": "administrator",
            "limits": {}
        }
    ],
    "vhosts": [
        {
            "name": "/"
        }
    ],
    "permissions": [
        {
            "user": "guest",
            "vhost": "/",
            "configure": ".*",
            "write": ".*",
            "read": ".*"
        }
    ],
    "topic_permissions": [],
    "parameters": [],
    "global_parameters": [
        {
            "name": "internal_cluster_id",
            "value": "rabbitmq-cluster-id-rYaWHykqgYLbTdQoLsCYdQ"
        }
    ],
    "policies": [],
    "queues": [
        {
            "name": "IoTHub",
            "vhost": "/",
            "durable": false,
            "auto_delete": false,
            "arguments": {}
        }
    ],
    "exchanges": [],
    "bindings": []
}

「rabbitmq.conf」を確認します。

root@rabbitmq:/etc/rabbitmq# cat rabbitmq.conf

loopback_users.guest = false
listeners.tcp.default = 5672
default_pass = guest
default_user = guest
management.tcp.port = 15672
management.load_definitions = /etc/rabbitmq/cp_definitions.json
6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1