カスタム Docker イメージの操作
2020 年 11 月 20 日に、Dockerhub は匿名イメージ・プルに速度制限を導入しました。 この変更は、Dockerhub をホストとするカスタム・イメージを使用することによってジョブを実行するユーザーに影響する可能性があります。
パイプライン基本イメージは、すべてのビルドの要件をサポートしていないことがあります。 例えば、node、Java、またはその他のツールのバージョンを細かく制御する必要がある場合があります。 この問題に対処するには、一連の新規パッケージをインストールして、環境変数 (PATH
など) を慎重に構成して環境をセットアップする最初のステップをパイプライン・ジョブに組み込みます。 しかし、さらに優れた方法は、ジョブの基礎として「カスタム Docker イメージ」を実行するためにパイプラインのサポートを使用することです。
パイプラインのカスタム Docker イメージ・サポートは、特定のパイプライン・ジョブの実行中にそのジョブで使用するイメージを提供するためだけに使用されます。 例えば、ジョブで実行するスクリプトに必要なカスタム・ツールが含まれているイメージを提供できます。 ジョブが完了すると、ジョブが実行されていたコンテナーは破棄されます。
ビルド、テスト、またはデプロイのいずれのジョブ・タイプを使用する場合でも、「カスタム Docker イメージ」サブタイプを選択して、使用する Docker イメージ名を指定し、実行するスクリプトを指定できます。 例えば、Maven 3.5.3 および IBM Java を使用してビルド・ジョブを実行するには、以下のオプションを使用します。

Docker イメージ名の指定
カスタム Docker イメージ・ジョブの Docker イメージ名の動作は、Docker CLI でのイメージ名の動作と同様に設計されています。 Docker イメージ名の形式は、[repository][:][tag]
です。 例えば、docker run maven:3.5.3-ibmjava
の場合、Docker イメージ名は maven:3.5.3-ibmjava
です。ここで、maven
はリポジトリー、3.5.3-ibmjava
はタグです。 使用できる Docker イメージ名に制限はありません。有効な Docker イメージはすべて機能します。
**「Docker イメージ名」**フィールドが入力されていない場合は、標準のパイプライン基本イメージが使用されます。
デフォルトでは、DockerHub上のリポジトリが検索されます。 IBM Cloud® Container Registry などの別の Docker レジストリーを使用する場合は、完全な DNS 名を使用できます。 また、Docker Hub 上のイメージの完全修飾名を使用することもできます。 例えば、registry.hub.docker.com/library/maven:3.5.3-ibmjava
です。
Docker イメージのtag
はオプションです。 タグを指定しない場合、デフォルトでlatest
に設定されます。 デフォルト値のlatest
は、リポジトリー所有者が管理する必要があるタグ名です。 これは、この Docker イメージが発生順で最新のイメージであることを意味するものではありません。
Docker Hub には、リポジトリーの大規模なコミュニティーがあります。 IBM hosts a number of public repositories that the IBM Cloud team uses at https://hub.docker.com/u/ibmcom/. ibmcom/ibmjava
リポジトリーと ibmcom/ibmnode
リポジトリーは、ビルドに役立ちます。
プライベート・イメージ・レジストリーの使用
認証を必要とするプライベート・レジストリーを使用している場合は、さらに 2 つのステージ環境プロパティー DOCKER_USERNAME
および DOCKER_PASSWORD
を設定する必要があります。 セキュア・プロパティーを使用して、DOCKER_PASSWORD
をマスクできます。 イメージがプルされる前に、カスタム Docker イメージ・ジョブはユーザー名とパスワードの資格情報を使用して
docker login
を実行します。
ほとんどのレジストリーでは、提供されたユーザー名とパスワードを使用できます。 IBM Cloud Container Registry を使用してプライベート・イメージを保管する場合は、認証にプラットフォーム API キーを使用する必要があります。
-
プラットフォームAPIキーをリクエストし、必ずキーを保存してください。
-
iamapikey
にDOCKER_USERNAME
を使用し、また、DOCKER_PASSWORD
に保存したプラットフォーム API キーを使用して、2 つのステージ環境プロパティーを作成します。Authentication credentials
スクリプトの指定
カスタム Docker イメージ・ジョブで script ブロックを使用して、通常のパイプライン・ジョブの動作と類似した方法でタスク・フォルダー内で実行されるスクリプト・ファイルを作成できます。
ご使用の Docker イメージの Dockerfile の ENTRYPOINT
と CMD
はオーバーライドされ、呼び出されません。 このため、場合によっては、初期化ステップをスクリプトに追加する必要があります。
カスタム Docker イメージ・ジョブを使用すると、スクリプトをより柔軟に実行できるようになります。具体的には、コマンド・インタープリターを制御できます。 通常、スクリプトの最初の行の先頭が #!
とコマンド・インタープリターの名前である場合、そのエントリーを使用してジョブ内のコマンドが実行されます。 コマンド・インタープリターを指定しない場合は、Docker イメージのデフォルト・シェルが使用されます。 通常、#!/bin/bash
または #!/bin/sh
が使用されます。適切な Docker イメージを指定すれば、awk
、node
、ruby
のイメージ・コマンド・インタープリターも機能します。