JenkinsによるDockerイメージのビルド
コード変更時にDockerイメージを自動的にビルドし、レジストリへプッシュするようJenkinsジョブを設定します。
「JenkinsによるDockerイメージのビルド」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Dockerビルドの自動化
Dockerイメージを手動でビルドすると、時間がかかり、結果にばらつきが生じやすく、エラーも起こりがちです。チームで開発する場合や、コードを頻繁に変更する場合は特にそうです。
信頼性が高く効率的なソフトウェアデリバリーには、自動化が不可欠です。このレッスンでは、JenkinsとDockerを連携して、イメージの作成とプッシュを自動化する方法を学びます。

JenkinsとDockerの前提条件
JenkinsでDockerイメージをビルドするには、Dockerデーモンと通信する必要があります。つまり、Jenkinsジョブが実行されるマシンまたはエージェントに、Dockerクライアントがインストールされていなければなりません。
次のものも必要です。
- 実行中のJenkinsサーバー(レッスン1で構築したもの)
- Dockerレジストリへのアクセス(例:Docker Hub)
- サンプルアプリケーションとそのDockerfile
JenkinsホストへのDockerのインストール
JenkinsでDockerコマンドを実行できるようにするには、JenkinsサーバーまたはエージェントにDockerがインストールされ、設定されていることを確認してください。多くの場合、JenkinsユーザーにはDockerデーモンを操作する権限が必要です。
Linuxシステムでは、次のように設定できます。
sudo apt-get update
sudo apt-get install -y docker.io
sudo usermod -aG docker jenkins
sudo systemctl restart docker
sudo systemctl restart jenkinsレジストリ認証情報の保護
Dockerレジストリにイメージをプッシュするには、Jenkinsに認証情報が必要です。これらをJenkinsfileやジョブの設定に直接記述せず、安全に保存することが重要です。
Jenkinsに組み込まれているCredentials機能が最適です。
- Manage Jenkins > Manage Credentialsに移動します。
- Dockerレジストリ用に新しいUsername with password認証情報を追加します。
- 後で参照できるよう、説明的なID(例:
dockerhub-credentials)を付けます。
サンプルFlaskアプリケーション
非常にシンプルなPython Flaskアプリケーションを使用します。これをapp.pyという名前のファイルに保存します。このアプリケーションは基本的な「Hello」メッセージを返します。
Pythonの依存関係を指定するために、requirements.txtファイルも必要です。
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from CoddyKit!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
# requirements.txt
Flask==2.0.2Dockerfileの作成
次に、Dockerfileを使ってDockerイメージを定義します。このファイルには、アプリケーションイメージをビルドする方法をDockerに指示します。
このDockerfileは、app.pyおよびrequirements.txtと同じディレクトリに配置してください。
# Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]Jenkinsジョブ:ビルドステップ
ここでは、JenkinsのFreestyleジョブを設定します。Build Stepsセクションで、Execute shellステップを追加します。このコマンドでDockerイメージをビルドします。
yourusernameをDocker Hubのユーザー名またはレジストリパスに置き換えることを忘れないでください。
# In Jenkins 'Execute shell' build step:
docker build -t yourusername/coddykit-app:latest .Jenkinsジョブ:ログインとプッシュのステップ
イメージをビルドしたら、Dockerレジストリにプッシュする必要があります。通常、そのためにはログインが必要です。先ほど保存した認証情報を使用します。
別のExecute shellステップを追加します。正しく設定されていれば、Jenkinsは認証情報を環境変数(例:DOCKER_USER、DOCKER_PASS)として注入します。
# In Jenkins 'Execute shell' build step:
echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
docker push yourusername/coddykit-app:latestビルドトリガーの自動化
CI/CDの強みは自動化にあります。Jenkinsでは、さまざまなイベントをきっかけに、これらのビルドジョブとプッシュジョブを自動的に開始できます。
- SCM Polling:JenkinsがGitリポジトリを定期的に確認し、新しいコミットがないか調べます。
- Webhooks:Gitプロバイダー(GitHub、GitLab、Bitbucket)が、コードがプッシュされるたびにJenkinsへ通知を送信します。
- Upstream Projects:別のJenkinsジョブが正常に完了したときにトリガーされます。
Jenkinsジョブのテスト
ビルドステップとトリガーを設定したら、Jenkinsジョブを保存します。手動でビルドを開始してテストできます。Dockerイメージのビルドとプッシュが成功したことを、コンソール出力で確認してください。
実行が成功すれば、コードが変更されるたびにCIパイプラインで新しいDockerイメージを自動的に作成し、保存できるようになります。
簡単な確認
DockerイメージをビルドしてプッシュするJenkinsジョブを設定しました。Gitリポジトリには新しいコード変更があります。
まとめ:ビルドとプッシュ
よくできました。このレッスンでは、次の方法を学びました。
- Dockerを操作できるようにJenkins環境を準備する。
- JenkinsでDockerレジストリの認証情報を安全に管理する。
- Dockerfileを使用してDockerイメージをビルドするJenkinsジョブを設定する。
- 新しくビルドしたイメージをDockerレジストリにプッシュする。
- 自動ビルドをトリガーするさまざまな方法を理解する。
これらの手順の自動化は継続的インテグレーションの重要な要素であり、継続的デリバリーへの基盤となります。
よくある質問
「JenkinsによるDockerイメージのビルド」レッスンは無料ですか?
はい。「JenkinsによるDockerイメージのビルド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「JenkinsによるDockerイメージのビルド」で何を学びますか?
コード変更時にDockerイメージを自動的にビルドし、レジストリへプッシュするようJenkinsジョブを設定します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「JenkinsによるDockerイメージのビルド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Jenkins入門
- JenkinsによるDockerイメージのビルド
- Jenkinsによるデプロイの自動化
- JenkinsfileによるJenkins Pipeline as Code