無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

Docker での CircleCI のマシンランナーのインストール

1+ year ago1 min read
クラウド
Server v4.x
Server v3.x
このページの内容

このページでは、CircleCI のマシンランナーを Docker Executor を使用してインストールする方法を説明します。 プライベート Kubernetes クラスタでのセルフホストランナーのセットアップをお考えの場合、 コンテナランナー に関する説明のページをご覧ください。

コンテナランナーは、セルフホストランナーでコンテナ化したジョブを実行する際に推奨される方法です。 コンテナランナーは、ジョブ実行時に、カスタム Docker イメージをシームレスに定義、パブリッシュ、使用する機能を提供し、.circleci/config.yml ファイル内の steps の一部として依存関係を列挙せずに、カスタム Docker イメージを使って依存関係やライブラリを簡単に管理する機能も提供します。

Docker を使うマシンベースのアプローチ

上記リンクのコンテナランナーを使用できない場合は、マシンランナーを使って下記の方法で Docker をインストールできます。

ランナー条件

前提条件

マシンランナーをインストールし、ジョブを実行するには、root 権限があり、以下のユーティリティとツールがシステムにインストールされている必要があります:

  • coreutils (Linux のみ)

  • curl (macOS ではデフォルトでインストール済み)

  • sha256sum (プリインストールされていない場合):

    • macOS の場合は、brew install coreutils ( Homebrew が必要)

    • Ubuntu/Debain の場合は、`sudo apt install coreutils

    • Red Hat の場合は、sudo yum install coreutils

  • tar

  • gzip

  • sepolicy ( RHEL 8 のみ)

  • rpmbuild ( RHEL 8 のみ)

  • コマンドラインからランナーをインストールする場合は、 CircleCI CLIを使用します。

Docker による追加前提条件

Docker をホストにインストールしておく必要があります。 runner コンテナは、起動するとすぐにジョブの実行を試みます。 コンテナは、停止されるまで他のジョブの実行用に再利用され続けます。

ホスト上で並列実行できるコンテナの数は、ホストで利用可能なリソースおよびジョブのパフォーマンス要件によって異なります。

1. ネームスペースとリソースクラスの作成

2. マシンランナーのイメージを拡張した Dockerfile を作成する

Dockerfile.runner.extended ファイルを作成します。 次の例では、ベースイメージ上に Python 3 をインストールします。

FROM circleci/runner:launch-agent
RUN sudo apt-get update; \
    sudo apt-get install --no-install-recommends -y \
        python3

3. Docker イメージをビルドする

docker build --file ./Dockerfile.runner.extended .

4. Docker コンテナを起動する

CIRCLECI_RESOURCE_CLASS=<resource-class> CIRCLECI_API_TOKEN=<runner-token> docker run --env CIRCLECI_API_TOKEN --env CIRCLECI_RESOURCE_CLASS --name <container-name> <image-id-from-previous-step>

コンテナは、起動するとすぐにジョブの実行を試みます。

サーバー上で Docker コンテナを起動する

サーバー上で Docker コンテナを起動する場合、--env フラグを使って agent_version`と `LAUNCH_AGENT_API_URL の環境変数を渡す必要があります。

CIRCLECI_RESOURCE_CLASS=<resource-class> CIRCLECI_API_TOKEN=<runner-token> agent_version=<agent_version_for_server> LAUNCH_AGENT_API_URL=<server_host_name> docker run --env agent_version --env LAUNCH_AGENT_API_URL --env CIRCLECI_API_TOKEN --env CIRCLECI_RESOURCE_CLASS --name <container-name> <image-id-from-previous-step>

Docker コンテナを停止する

docker stop <container-name>

Docker コンテナを削除する

同じ名前のコンテナを再作成する場合など、停止したマシンランナーコンテナをシステムから完全に削除する必要がある場合があります。

docker stop <container-name>; docker rm <container-name>;

Suggest an edit to this page

Make a contribution
Learn how to contribute