- 一般的なGitLab Runner Dockerイメージの使い方
- Dockerイメージをインストールし、コンテナを起動します。
- 設定の更新
- アップグレード版
- GitLab Runner のログを読む
- 信頼できるSSLサーバ証明書のインストール
- Dockerイメージ
- セリナックス
GitLab Runnerをコンテナで実行します。
このようにして、GitLab RunnerをDockerコンテナ内で実行することができます。
一般的なGitLab Runner Dockerイメージの使い方
GitLab Runner Dockerイメージ(UbuntuまたはAlpineLinuxベース)は、GitLab Runnerがホストに直接インストールされている場合のように、標準的なgitlab-runner
コマンドのラッパーとして設計されています。
一般的なルールとして、GitLab Runner のコマンドは通常次のように実行されます:
gitlab-runner <Runner command and options...>
で実行できます:
docker run <chosen docker options...> gitlab/gitlab-runner <Runner command and options...>
例えば、GitLab Runnerコマンドのトップレベルのヘルプ情報を取得するには次のように実行します:
docker run --rm -t -i gitlab/gitlab-runner --help
NAME:
gitlab-runner - a GitLab Runner
USAGE:
gitlab-runner <global options> command <command options> <arguments...>
VERSION:
10.7.0 (7c273476)
(...)
要するに、コマンドのgitlab-runner
の部分がdocker run [docker options] gitlab/gitlab-runner
に置き換えられ、残りのRunnerのコマンドはregisterのドキュメントに記述されている通りになります。唯一の違いは、gitlab-runner
コマンドがDockerコンテナの内部で実行されることです。
Dockerイメージをインストールし、コンテナを起動します。
始める前に、Dockerがインストールされていることを確認してください。
Docker コンテナ内部でgitlab-runner
を実行するには、コンテナの再起動時に設定が失われないようにする必要があります。 そのためには、以下の 2 つのオプションがあります。
GitLab Runnerのよくある問題を説明したFAQセクションを必ずお読みください。
オプション1:ローカルシステムのボリュームマウントを使用してRunnerコンテナを起動します。
この例では、gitlab-runner
コンテナにマウントされる設定ボリュームにローカルシステムを使用します。 このボリュームは設定やその他のリソースに使用されます。
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
/srv
の代わりに/Users/Shared
を使用してください。オプション2:Dockerボリュームを使用してRunnerコンテナを起動します。
この例では、構成コンテナを使用してカスタム・データ・ボリュームをマウントできます。
-
Dockerボリュームを作成します:
docker volume create gitlab-runner-config
-
先ほど作成したボリュームを使用して、Runnerコンテナを起動します:
docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v gitlab-runner-config:/etc/gitlab-runner \ gitlab/gitlab-runner:latest
ランナーの登録
最後のステップは新しいRunnerを登録することです。 GitLab Runnerコンテナは登録されるまでジョブを受け取りません。
設定の更新
config.toml
で設定を変更した場合、変更を適用するためにランナーを再起動する必要がある場合があります。gitlab-runner restart
を使用するのではなく、コンテナ全体を再起動するようにしてください:
docker restart gitlab-runner
アップグレード版
最新バージョン(または特定のタグ)を取り出します:
docker pull gitlab/gitlab-runner:latest
既存のコンテナを停止し、取り外します:
docker stop gitlab-runner && docker rm gitlab-runner
コンテナを元通りにスタートさせます:
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
-v /srv/gitlab-runner/config:/etc/gitlab-runner
または--volumes-from gitlab-runner-config
)を使用する必要があります。GitLab Runner のログを読む
GitLab Runnerが(ローカルにインストールされたバイナリであろうとDockerコンテナ内であろうと)フォアグラウンドタスクとして起動された場合、ログは標準出力に出力されます。 GitLab Runnerが(Systemdなどで)システムサービスとして起動された場合、ログはほとんどの場合、Syslogやその他のシステムロギング機構を通して記録されます。
GitLab Runner を Docker ベースのサービスとして起動すると、gitlab-runner ...
コマンドがコンテナのメインプロセスとなるため、docker logs
コマンドを使ってログを読むことができます。
例えば、GitLab Runnerを次のコマンドで起動した場合:
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
でログを取得することができます:
docker logs gitlab-runner
ここで、gitlab-runner
はコンテナの名前で、最初のコマンドで--name gitlab-runner
。
コンテナ・ログの扱いについての詳細は、Docker ドキュメントページを参照してください。
信頼できるSSLサーバ証明書のインストール
GitLab CIサーバーが自己署名SSL証明書を使用している場合は、GitLab CIサーバー証明書がGitLab Runnerコンテナから信頼されていることを確認してください。
gitlab/gitlab-runner
イメージは/etc/gitlab-runner/certs/ca.crt
で信頼できる SSL 証明書を探すように設定されていますが、これは-e "CA_CERTIFICATES_PATH=/DIR/CERT"
設定オプションを使って変更できます。
ca.crt
ファイルをデータボリューム(またはコンテナ)上のcerts
ディレクトリにコピーします。このca.crt
ファイルには、GitLab Runner に信頼させたいすべてのサーバのルート証明書が含まれて ca.crt
いるはずです。 GitLca.crt
ab Runner コンテナは ca.crt
起動時にファイルをインポートするので、コンテナがすでに起動している場合は、変更を有効にするために再起動する必要があるかもしれません。
Dockerイメージ
以下のマルチプラットフォームDockerイメージが利用可能です:
-
gitlab/gitlab-runner:latest
Ubuntuをベースにしています。 -
gitlab/gitlab-runner:alpine
UbuntuはAlpineをベースにしており、フットプリントははるかに小さくなっています(圧縮/解凍したUbuntuの160/350 MBに対してAlpineの45/130 MB)。
docker-machine
依存が含まれていません。Linux s390x プラットフォーム用のメンテナンスがまだ行われていないためです。 現在の状況については、イシューを参照してください。セリナックス
一部のディストリビューション(CentOS、RedHat、Fedora)では、基盤となるシステムのセキュリティを強化するため、デフォルトでSELinuxを使用しています。
このようなコンフィギュレーションを扱う際には、特別な注意が必要です。
- コンテナでビルドを実行するためにDockerexecutorを使用したい場合は、
/var/run/docker.sock
にアクセスする必要があります。 しかし、SELinuxが強制モードになっていると、/var/run/docker.sock
にアクセスする際にPermission denied
エラーが表示されます。 この問題を解決するには、selinux-dockersockをインストールしてください。 - ホスト上に永続ディレクトリが作成されていることを確認してください:
mkdir -p /srv/gitlab-runner/config
。 - ボリューム上で
:Z
、Dockerを実行します:
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /srv/gitlab-runner/config:/etc/gitlab-runner:Z \
gitlab/gitlab-runner:latest
原因と解決策についての詳細はこちらをご覧ください:http://www.projectatomic.io/blog/2015/06/using-volumes-with-docker-can-cause-problems-with-selinux/