CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回に引き続き、OpenShiftが提供する環境の全体像を踏まえて、「ImageStream」「BuildConfig」「DeployConfig」など、OpenShiftに固有の機能を紹介していきます。今回は、ビルド設定(BuildConfig)を用いて、Dockerイメージの作成を自動化する仕組みを説明します。
はじめに、Dockerイメージ作成の基礎として、Dockerfileによるイメージ作成処理の流れを復習しておきましょう。Dockerfileでは、まずはじめに、「FROM」命令で出発点となるDockerイメージを指定します。指定のイメージからコンテナを起動した上で、「RUN」命令で指定されたコマンドを実行するなどして、変更を加えたものが新しいDockerイメージになります。できあがったDockerイメージは、また別のDockerfileから、新たな出発点として指定することができます。つまり、Dockerイメージは、順番に変更を重ねていく、レイヤー型の構造になっています。
この構造は、OpenShiftの環境でも同じです。前回の図1に示した「OpenShiftの全体像」では、OpenShiftで扱うイメージの種類として、次の3つがあることを指摘しました。これらはちょうど、この順番でレイヤー構造を作ります。
OpenShiftの環境で新しいDockerイメージを作る際は、Dockerfileのほかに、STI(Source to Image)という仕組みを使うこともできます。厳密な決まりはありませんが、ベースイメージから開発テンプレートイメージを作る際はDockerfileを使用して、開発テンプレートイメージからアプリケーションイメージを作る際はSTIを使用することが多いようです。
STIでは、コンテナの中でアプリケーションをビルドするスクリプトを用意しておきます。出発点となるイメージからコンテナを起動してアプリケーションのソースコードをダウンロードした後に、このスクリプトを実行することで新しいDockerイメージを作成します。Dockerfileからスクリプトを実行しても同じことができますが、アプリケーションイメージを作る際は、アプリケーションのビルド処理をスクリプトで実行することが多いため、最初からスクリプトの利用が前提となるSTIの方が設定が簡単になります。STIでは、ビルド処理のスクリプトに加えて、ユニットテスト用のスクリプトも利用できるので、簡易的なCI(Continuous Integration/継続的インテグレーション)の仕組みを作ることも可能です。
前回説明したように、OpenShiftでは、すべてのDockerイメージがイメージストリームとして管理されます。したがって、DockerfileやSTIで新しいイメージを作成する際も、出発点となるイメージと完成したイメージのそれぞれが、対応するイメージストリームに所属します。「ビルド設定」では、これらのイメージストリームを含む、次の4つの情報を記載することで、Dockerイメージの作成を行ないます。
STIの場合、「イメージの作成に必要なファイル」は、アプリケーションをビルドするソースコードそのものになりますので、ソースコードを含むリポジトリのURLに加えて、ブランチ名などを指定します。Dockerfileを使用する場合は、これと同様に、Dokcerfileと関連するファイルを含むGitHubのリポジトリを指定します。全体として、図1のような構造となります。
図1 ビルド設定によるDockerイメージ作成の流れ
さらに、ビルド設定には、イメージの作成を開始する「トリガー」が指定できます。たとえば、出発点とするイメージのタグ名が付け替えられたタイミングで、イメージの作成を開始するというトリガーがあります。これはちょうど、前回の図3の流れに対応します。例として、ベースイメージにおける「latest」タグのイメージから、開発テンプレートイメージを作成するビルド設定を考えてみます。この場合、新しいベースイメージがイメージストリームに追加されて、「latest」タグがそちらに付け替えられたタイミングで、自動的に開発テンプレートイメージが更新されます。
あるいは、開発テンプレートイメージからアプリケーションイメージを作る場合は、STIで使用するアプリケーションのソースコードが変更されたタイミングでイメージの更新が必要です。このような場合は、GitHubのwebhookという機能を用いて、GitHubからOpenShiftに対してソースコードの変更を通知するようにしておきます。ビルド設定において、webhookをトリガーに指定することで、ソースコードの更新に合わせて、アプリケーションのビルドとユニットテストを自動で開始できるようになります。ユニットテストに失敗した場合は、そこでイメージの作成処理が中断されるので、動かないアプリケーションのイメージが無駄に登録されることはありません。
これらのビルド設定の実例については、筆者のBlog記事も参考にしてください(*1)(*2)。
今回は、OpenShiftのDockerイメージ管理に関連して、イメージの作成を自動化する「ビルド設定」を紹介しました。前回説明したイメージストリームと連携して動作することが、理解いただけたと思います。次回は、OpenShiftの機能紹介における最後の話題として、「デプロイ設定(DeployConfig)」の解説に進みたいと思います。
*1 「OpenShift OriginによるDockerイメージ管理(2)〜Dockerfileによるイメージビルドを自動化」
*2 「OpenShift OriginによるDockerイメージ管理(4)〜S2Iによるイメージビルド」
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes