TeamCity On-Premises 2026.2 Help

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

ツール

ビルドパラメーターとエージェント要件

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イメージを定期的にクリーンアップします:

そのようなビルドの場合

  • TeamCity エージェントは、ビルド中にタグ付けまたはプルされた Docker イメージを追跡します (イメージのリストは buildAgent/system/docker-使用済みイメージ.dat ファイルに保存されます)。

  • クリーンアップ / ディスク容量の解放中、TeamCity エージェントは、これらのイメージが 3 日以内 (またはその後のディスク容量解放の試行で 1 日または 0 日以内) に使用されていない場合、除去しようとします。

さらに、TeamCity は docker/podman システムプルーン --volumes コマンドを使用してローカルキャッシュを消去します。 Docker インストールの場合、このクリーンアップは v.17.06.1 以降で機能します。

プッシュされたイメージを報告するサービスメッセージ

何らかの理由で、TeamCity がイメージがプッシュされたことを判断できない場合、ユーザーは特別な サービスメッセージを送信して、この情報を TeamCity サーバーに報告できます:

##teamcity[dockerMessage type='dockerImage.push' value='<full_image_tag>,size:<size in bytes>,digest:<hash>']

例:

##teamcity[dockerMessage type='dockerImage.push' value='myRegistry/repo-test:17,size:2632,digest:sha256:8dc5a195c3dcdc7c288d16288ff3f9ab1d8a5a230e09afb9c8dc9215e861aa55']

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 で認証できるようになります。

2026 年 9 月 11 日