TeamCity とコンテナーマネージャーの統合
TeamCity はコンテナーマネージャー (Docker と Podman) と統合し、幅広い操作をサポートします。
- コンテナー内でステップを実行する
ほとんどのビルド手順には、手順を実行するコンテナーを指定できる コンテナー設定セクションが含まれています。

構成に同じコンテナー内で実行する必要のある複数のステップがある場合は、各ステップを個別に構成するのではなく、 Docker で実行 ビルド機能を使用してください。
どちらの方法も、Docker または Podman がインストールされたビルドエージェントが必要です。 TeamCity はどちらのツールでもコンテナー内でステップを実行できます。
- イメージのプル、ビルド、アップロード
Docker ビルドステップでは、
ビルドとプッシュを含むカスタムdocker …コマンドを実行できます。 Docker Compose ビルドステップでは、複数のコンテナーで構成される Docker アプリケーションを実行できます。Docker ではなく Podman がインストールされているビルドエージェントでこれらの操作を実行するには、汎用ビルドステップである コマンドライン (スクリプト) を使用します。
- TeamCity サーバーとエージェントを Docker イメージとして実行
詳細については、以下のページを参照してください。
クラシックビルド構成では、これらの統合に、 Docker レジストリ接続 ビルド機能に割り当てられた対応する Docker Registry 接続が必要です。 構成で使用するレジストリ接続の選択に加えて、このビルド機能は コンテナー情報 タブを ビルド結果 に追加し、ビルド中にレジストリに公開されたイメージに関する情報を表示できるようにします。

パイプラインでは、 統合 セクション内の該当する項目を設定するだけで済みます。
互換性と要件
環境要件
Docker または Podman 関連の操作を実行するには、ビルドエージェントが Docker または Podman 実行可能ファイルを使用できる必要があります。
Docker は、Linux、Windows、macOS ビルドエージェントにインストールできます。
Linux では、インストールされている Docker が検出されると、Docker レジストリ接続統合が実行されます。
Windows では、統合は Linux および Windows コンテナーモードで機能します。
macOS では、ビルドエージェントを実行しているユーザー用に公式の Mac の Docker サポート(英語)をインストールする必要があります。
Podman は、主に Linux 向けに設計されたツールです。 Windows および macOS で実行するには、Podman に Linux 仮想マシン (「Podman マシン」) がインストールされている必要があります。 さまざまなオペレーティングシステムに Podman をインストールする方法の詳細については、次の記事を参照してください: ポッドマンのインストール手順(英語)。
ビルドエージェントマシンの
registries.confファイルで、コンテナーレジストリのドメインを指定します。 例:非修飾検索レジストリ = ["docker.io"]。 Podman と TeamCity には、次の目的でこのレジストリ一覧が必要です:podman …コマンドで短いイメージ名 (たとえば、podman プル registry.access.redhat.com/ubi8:latestではなくpodman プル ubi8) が使用される場合、完全なコンテナーアドレスを解決します。ビルド構成に Docker レジストリ接続 ビルド機能がある場合は、レジストリに正常にログインします。
registries.confファイルの詳細については、次の記事を参照してください: Linux コンテナーレジストリを管理する方法(英語)。systemd 経由で 自動的に起動するように構成された Linux ビルドエージェントを実行している場合は、ユーザーセッションを実行し続けるために ユーザーの残留(英語)を有効にします:
loginctl 有効化-linger my_agent_user
ツール
エージェントマシンに Docker(英語) または Podman(英語) をインストールします。 Windows および macOS エージェントの場合は、さらに ポッドマンマシン(英語)が必要です。
Docker Compose ビルドランナーを使用するには、 Docker Compose もインストールする必要があります。
ビルドパラメーターとエージェント要件
TeamCity は、利用可能なエージェントソフトウェアを識別するために、次の パラメーターをチェックします:
コンテナー.エンジン— エージェントマシンにインストールされているコンテナーマネージャーに応じて、「docker」、「podman」、「docker,podman」を返します。 Docker と Podman の両方がインストールされている場合、TeamCity はデフォルトで Docker を使用します。teamcity.default.сontainer.エンジン— このプロパティをDockerまたはPodmanに設定すると、常に希望のツールが使用されます。 このプロパティを使用すると、両方のツールが利用可能な場合に TeamCity が Docker を使用するように強制するデフォルトのロジックをオーバーライドできます。 このプロパティは、 構成パラメーターとして、または個々のエージェントの設定(buildAgent.properties ファイル内)として設定できます。docker.サーバー.バージョン、docker.バージョン— インストールされている Docker エンジン(英語)および Docker CLI(英語) のバージョンをそれぞれ返します。podman.バージョン— インストールされている Podman ソフトウェアのバージョンを保存します。docker.サーバー.OS タイプ、podman.OS 種別— エージェント OS のタイプを返します。 サポートされる値は、「linux」(Linux エージェントと macOS エージェントの両方) と「windows」です。dockerCompose.バージョン— Docker Compose ビルドステップが使用されている場合、Docker Compose ファイルのバージョンを返します。
使用する具体的な Docker/Podman 統合に応じて、TeamCity は異なる エージェント互換性要件を指定します。 たとえば、 ビルド構成で Docker ランナーを使用する場合、この構成は docker.server.version が存在します 要件を満たすエージェントでのみ実行できます。
Docker Disk Space クリーナー
Docker Disk Space Cleaner は、ビルドに必要なディスク容量を確保する 空きディスク容量 ビルド機能の拡張機能です。
TeamCity は、タグ付け / プルされた関連する Dockerイメージを定期的にクリーンアップします:
Docker レジストリ接続 ビルド機能を使用したビルド、 または
Docker または Docker Compose ビルドステップで、 または
コンテナーラッパー 拡張機能が有効になっているビルドステップ。
そのようなビルドの場合
TeamCity エージェントは、ビルド中にタグ付けまたはプルされた Docker イメージを追跡します (イメージのリストは
buildAgent/system/docker-使用済みイメージ.datファイルに保存されます)。クリーンアップ / ディスク容量の解放中、TeamCity エージェントは、これらのイメージが 3 日以内 (またはその後のディスク容量解放の試行で 1 日または 0 日以内) に使用されていない場合、除去しようとします。
さらに、TeamCity は docker/podman システムプルーン --volumes コマンドを使用してローカルキャッシュを消去します。 Docker インストールの場合、このクリーンアップは v.17.06.1 以降で機能します。
プッシュされたイメージを報告するサービスメッセージ
何らかの理由で、TeamCity がイメージがプッシュされたことを判断できない場合、ユーザーは特別な サービスメッセージを送信して、この情報を TeamCity サーバーに報告できます:
例:
Docker ダウンロードレート制限への準拠
2020 年 11 月 1 日以降、Docker Hub では、パブリックイメージプルの ダウンロードレート制限(英語)が導入されています。
TeamCity ビルドで コンテナーラッパー または Docker Compose を使用して Docker Hub からイメージをプルする場合は、これらのプルが次の制限を超えないようにしてください:
匿名の Docker ユーザー: 6 時間あたり 100 プル
無料プランの Docker ユーザー: 6 時間あたり 200 プル
Team または Pro Docker アカウントをお持ちの場合、プルの数は無制限のままです。
通常の TeamCity エージェントは、一度プルしたイメージをキャッシングに保存します。 これにより、同じプル済みイメージを使用して、定期的に無制限の数のビルドを実行できます。
ただし、考慮すべきケースがいくつかあります:
クラウドエージェントを使用している場合、新しいクラウドエージェントが起動されるたびに、必要なすべてのイメージがダウンロードされます。
ビルドステップ設定で 各実行時に強制的にプルするオプションが有効になっている場合、ローカルエージェントであっても、新しいビルドが実行されるたびにイメージがダウンロードされます。 レート制限に達しないように、このオプションを無効にすることをお勧めします。
ビルド用に ディスク容量を解放している間、TeamCity はローカルキャッシングから古い未使用の Dockerイメージをクリーンアップする場合があります。
以前にビルドが Docker Hub に匿名でアクセスしていた場合は、無料の Docker ユーザープロファイルを作成し、TeamCity プロジェクトで Docker 接続 を構成することで、許可されるプル数を倍増できます。 比喩的に倍増 (double) です。 TeamCity エージェントは、この接続を使用して、各ビルドの前に Docker Hub で認証できるようになります。