Docker イメージを自社ホスト ランナーで使用する

自社ホスト ランナーを使用する際には、独自のレジストリからアトラシアンの公開 Docker イメージをプルすることも、公開 Docker イメージの修正版を使用することもできます。

自社ホスト ランナーでカスタム Docker レジストリの Docker イメージを使用するには、PAUSE_IMAGEAUTH_PROXY_IMAGE、および CLONE_IMAGE を使用して設定します。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 docker container run -it -v /tmp:/tmp \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/containers:/var/lib/docker/containers:ro \ -e ACCOUNT_UUID=<my-account-id> \ -e REPOSITORY_UUID=<my-repository-id> \ -e RUNNER_UUID=<my-runner-id> \ -e OAUTH_CLIENT_ID=<my-oauthclient-id> \ -e OAUTH_CLIENT_SECRET=<my-oauthclient-secret> \ -e WORKING_DIRECTORY=/tmp \ -e RUNTIME_PREREQUISITES_ENABLED=true \ -e PAUSE_IMAGE="my-private-registry/my-pause:latest" \ -e AUTH_PROXY_IMAGE="my-private-registry/my-auth-proxy:latest" \ -e CLONE_IMAGE="my-private-registry/my-clone:latest" \ --name my-runner-b0ae87b8-423b-5c24-9a95-84ddad9cdfae \ docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:1

自社ホスト ランナーが使用するアトラシアンの初期設定の Docker イメージは次のとおりです。

  • PAUSE_IMAGEdocker-hub.packages.atlassian.com/google/pause:latest

  • AUTH_PROXY_IMAGEdocker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-auth-proxy:prod-stable

  • CLONE_IMAGEdocker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-dvcs-tools:prod-stable

上記の既定のイメージはすべて、ログインせずに docker pull によって取得できます (これらは公開イメージです)。

非公開 Docker レジストリのイメージを使用する

Docker ベースのランナーは、ユーザー名とパスワードを使用して認証できる非公開 Docker レジストリからアトラシアンの公開 Docker イメージをプルするように設定できます。

Docker レジストリ (Docker Hub など) でホストされている非公開 Docker イメージを使用するには、Docker レジストリのログイン認証情報を使用して .docker/config.json ファイルを作成または更新します。トークンや時限パスワードなど、基本認証 (ユーザー名とパスワード) 以外の認証情報の使用はサポートされていません。認証情報ストアの使用もサポートされていません。

.docker/config.json ファイルは次のいずれかの方法で作成できます。

Docker の login コマンドを使用する

ログイン認証情報を使用して ~/.docker/config.json ファイルを作成または更新するには、次の手順に従います。

  1. ランナーのホストで、次のコマンドを実行し、プロンプトが表示されたらユーザー名とパスワードを入力します。

    1 docker login <registry_hostname>
    • ログインに成功すると、パスワードが非暗号化状態で保存されることを示す警告と「Login Succeeded」というメッセージが表示されます。

    • 警告が表示されない場合は、ホストの Docker インスタンスが認証情報ストアを使用するように設定されている可能性がありますが、認証情報ストアはサポートされていません。

  2. 次に示すように、ボリューム フラグ (-v) を使用して、ホストの .docker/config.json ファイルをランナー コンテナーにマウントします。

    1 -v <path_to_docker_config_directory>/.docker:/root/.docker

    <path_to_docker_config_directory>/.docker の既定の場所は ~/.docker/ です。

    例:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 docker container run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/containers:/var/lib/docker/containers:ro \ -v <path_to_docker_config_directory>/.docker/config.json:/root/.docker/config.json \ -e ACCOUNT_UUID=<my-account-id> \ -e REPOSITORY_UUID=<my-repository-id> \ -e RUNNER_UUID=<my-runner-id> \ -e OAUTH_CLIENT_ID=<my-oauthclient-id> \ -e OAUTH_CLIENT_SECRET=<my-oauthclient-secret> \ -e WORKING_DIRECTORY=/tmp \ -e RUNTIME_PREREQUISITES_ENABLED=true \ -e PAUSE_IMAGE="my-private-registry/my-pause:latest" \ -e AUTH_PROXY_IMAGE="my-private-registry/my-auth-proxy:latest" \ -e CLONE_IMAGE="my-private-registry/my-clone:latest" \ --name my-runner-b0ae87b8-423b-5c24-9a95-84ddad9cdfae \ docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:1

Docker の config.json ファイルを手動で作成する

ログイン認証情報を使用して ~/.docker/config.json ファイルを手動で作成または更新するには、次の手順に従います。

  1. ランナーのホストで、プレーン テキスト エディターを使用して、ユーザーのホーム ディレクトリに .docker/config.json ファイルを作成するか、既存の該当ファイルを開きます。

  2. 次に示すように、auths という最上位プロパティを追加します。

    1 2 3 4 5 6 7 8 9 10 { "auths": { "my-private-registry-uri": { "auth": "dXNlcjpwYXNzd29yZA==" }, "my-other-private-registry-uri": { "auth": "dXNlcjE6cGFzc3dvcmQx" } } }

    my-private-registry-urimy-other-private-registry-uri は、2 つの非公開レジストリ (Docker Hub など) の URL です。auth の値は、レジストリのユーザー名とパスワード (コロン区切り) を base64 でエンコードしたものです。macOS または Linux のコマンド ラインでユーザー名とパスワードを base64 でエンコードするには、次のコマンドを実行します。

    1 echo -n 'user:password' | base64

     

  3. 次に示すように、ボリューム フラグ (-v) を使用して、ホストの .docker/config.json ファイルをランナー コンテナーにマウントします。

    1 -v <path_to_docker_config_directory>/.docker:/root/.docker

    <path_to_docker_config_directory>/.docker の既定の場所は ~/.docker/ です。

    例:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 docker container run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/containers:/var/lib/docker/containers:ro \ -v <path_to_docker_config_directory>/.docker/config.json:/root/.docker/config.json \ -e ACCOUNT_UUID=<my-account-id> \ -e REPOSITORY_UUID=<my-repository-id> \ -e RUNNER_UUID=<my-runner-id> \ -e OAUTH_CLIENT_ID=<my-oauthclient-id> \ -e OAUTH_CLIENT_SECRET=<my-oauthclient-secret> \ -e WORKING_DIRECTORY=/tmp \ -e RUNTIME_PREREQUISITES_ENABLED=true \ -e PAUSE_IMAGE="my-private-registry/my-pause:latest" \ -e AUTH_PROXY_IMAGE="my-private-registry/my-auth-proxy:latest" \ -e CLONE_IMAGE="my-private-registry/my-clone:latest" \ --name my-runner-b0ae87b8-423b-5c24-9a95-84ddad9cdfae \ docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:1

制限事項

この機能には次の制限があります。

  • 認証情報ストアを使用した認証はサポートされていません。基本認証 (ユーザー名とパスワード) を使用したログインのみがサポートされています。

  • イメージはレジストリでホストされている必要があります。ランナーでは、常にリモート ホストからイメージがプルされ、ホスト デバイス上のイメージは使用できません。

  • この機能は Docker 自社ホスト ランナーでのみ利用できます。他のランナー (シェルベースのランナーなど) ではコンテナーは使用されません。

その他のヘルプ