6.7. Buildah でコンテナーレジストリーの使用

Buildah を使用すると、ローカルシステムと、パブリックまたはプライベートのコンテナーレジストリーとの間で、コンテナーイメージをプッシュまたはプルできます。以下の例では、方法を説明します。

  • buildah を使用して、コンテナーをプッシュして、プライベートレジストリーからプルします。
  • ローカルシステムと Docker レジストリー間でコンテナーをプッシュし、プルします。
  • 認証情報を使用して、コンテナーをプッシュする際にレジストリーアカウントにコンテナーを関連付けます。

buildah コマンドと一緒に skopeo コマンドを使用して、コンテナーイメージの情報に関するレジストリーを問い合わせます。

6.7.1. プライベートレジストリーへのコンテナーのプッシュ

コンテナーをプライベートコンテナーレジストリーにプッシュする buildah コマンドは、コンテナーをプッシュする docker コマンドと同じように機能します。以下が必要です。

  • プライベートレジストリーを設定します (OpenShift のコンテナーレジストリーを使用するか、Red Hat Quay コンテナーレジストリーを設定できます)。
  • プッシュするコンテナーイメージを作成または取得します。
  • buildah push を使用して、イメージをレジストリーにプッシュします。

ローカルの Buildah コンテナーストレージからイメージをプッシュするには、イメージ名を確認してから、buildah push コマンドを使用してプッシュします。ローカルイメージ名と、場所を含む新しい名前の両方を忘れないでください。たとえば、TCP ポート 5000 でリッスンしているローカルシステムで実行しているレジストリーは、localhost:5000 として識別されます。

# buildah images
IMAGE ID     IMAGE NAME                       CREATED AT          SIZE
cb702d492ee9 docker.io/library/myecho2:latest Nov 12, 2018 16:50     3.143 KB

# buildah push --tls-verify=false myecho2:latest localhost:5000/myecho2:latest
Getting image source signatures
Copying blob sha256:e4efd0...
...
Writing manifest to image destination
Storing signatures

curl コマンドを使用して、レジストリー内のイメージを一覧表示し、skopeo で、イメージに関するメタデータを検証します。

# curl http://localhost:5000/v2/_catalog
{"repositories":["myatomic","myecho2"]}
# curl http://localhost:5000/v2/myecho2/tags/list
{"name":"myecho2","tags":["latest"]}
# skopeo inspect --tls-verify=false docker://localhost:5000/myecho2:latest | less
{
    "Name": "localhost:5000/myecho2",
    "Digest": "sha256:8999ff6050...",
    "RepoTags": [
        "latest"
    ],
    "Created": "2017-11-21T16:50:25.830343Z",
    "DockerVersion": "",
    "Labels": {
        "architecture": "x86_64",
        "authoritative-source-url": "registry.redhat.io",

この時点で、コンテナーレジストリーからコンテナーイメージをプルできるツールは、プッシュしたイメージのコピーを取得できます。たとえば、RHEL 7 システムでは、docker デーモンを起動してイメージをプルすると、以下のように docker コマンドを実行してそのイメージを使用できるようにします。

# systemctl start docker
# docker pull localhost:5000/myecho2
# docker run localhost:5000/myecho2
This container works!

6.7.2. Docker Hub へのコンテナーのプッシュ

buildah コマンドで、Docker Hub の認証情報を使用して、Docker Hub からイメージをプッシュおよびプルできます。この例では、ユーザー名とパスワード (testaccountXX:My00P@sswd) を、自身の Docker Hub 認証情報に置き換えます。

# buildah push --creds testaccountXX:My00P@sswd \
     docker.io/library/myecho2:latest docker://testaccountXX/myecho2:latest

プライベートレジストリーと同様に、podman コマンド、buildah コマンド、または docker コマンドを使用して、Docker Hub からコンテナーを取得して実行できます。

# podman run docker.io/textaccountXX/myecho2:latest
This container works!
# buildah from docker.io/textaccountXX/myecho2:latest
myecho2-working-container-2
# podman run myecho2-working-container-2
This container works!

このページには機械翻訳が使用されている場合があります (詳細はこちら)。