第9回 Dockerfileで“インフラストラクチャ・アズ・コード”を体験古賀政純の「攻めのITのためのDocker塾」(4/4 ページ)

» 2015年09月30日 08時00分 公開
前のページへ 1|2|3|4       

インフラストラクチャ・アズ・コードにおける「べき等性」って?

 Dockerfileは手順書がコード化されているため、誰がやっても、ある一定のレベルの品質を確保して、環境を素早く構築できるのがウリになっていることはすでに述べた通りです。

 しかし、このDockerfileを使って作成したDockerイメージは、誰が何度やっても全く同じものなのでしょうか。この「誰が何度やっても全く同じ」というのはIT基盤構築では非常に重要なのです。この「誰が何度やっても完全に同じ結果になる」ことを、インフラストラクチャ・アズ・コードの世界では、「べき等性」と呼んでいます。

 Docker環境では、様々な開発者がDockerイメージをそのまま再利用してコンテナを稼働させる、あるいは、改良を加えるといった行為が頻繁に行われます。ここで、Dockerイメージを提供する側が期待しているDockerコンテナの挙動と、再利用する側のDockerコンテナの挙動は全く同じでなければなりません。このようなべき等性は、Dockerfileでどこまで確保できているのか。100%と言いたいところですが、実はそうではありません。Dockerfileの以下のRUN行を見て下さい。

RUN yum update -y && yum clean all

 これは、インターネットを経由して入手したCentOSのDockerイメージに対して、パッケージのアップデートを行っています。しかし、このCentOS 6.6に対応した大量のアップデートパッケージは、コミュニティによってメンテナンスが続けられており、アップデートパッケージの内容は更新されて続けているのです。代表的なパッケージとしては、Linuxカーネルがあげられるでしょう。つまり、「CentOS 6.6を更新します」と言っても、更新されるカーネルバージョンは、そのDockerfileでビルドする時期によって変わってしまうのです。誰が何度やっても全く同じ結果になるという「べき等性」を保証していることにはなりません。

 では、Dockerfileを使っても「べき等性」は担保できないのか。実は、Dockerのコミュニティでも議論されていますが、Dockerfileでは、できるだけ利用するパッケージのバージョンを明記し、固定すべきであると言われています。これには賛否両論があるのですが、べき等性を完全に保証しなければならないような場合は、バージョンを固定し、不用意にインターネットを使ってアップデートを行わないことが考えられます。もし更新する必要がある場合は、インターネットを経由したアップデートではなく、更新元のアップデートパッケージ群が完全に固定化されているような環境を別途用意すべきであるという意見もあります。

 具体的には、例えばCentOS 6.6を更新したいならば、その一つ上のバージョンのCentOS 6.7のインストールメディアのisoイメージで構成されたリポジトリを更新元としてローカルに登録し、利用者は、その範囲内でパッケージの更新を行うといった環境をあらかじめ準備しておくというものです。全く同じDockerのバージョン、全く同じDockerfile、全く同じアプリケーションの設定ファイル、全く同じユーザーデータを使っているのに、構築したアプリケーションの挙動が人によって微妙に違うということは避けなければなりません。べき等性が崩れるとDocker導入のメリットも著しく損なわれてしまいます。Dockerfileを使ってパッケージを更新する場合は、べき等性の観点かから、パッケージの更新をどうすべきかを慎重に検討すべきなのです。

photo インフラストラクチャ・アズ・コードにおける「べき等性」は非常に重要

 以上で、Dockerのキモともいうべき、Dockerfileを紹介しました。Dockerfileは、このほかにもいろいろ検討すべき事がありますが、本連載では、まずDockerfileの基本を学んで、雰囲気をつかんでいただくことを基本にしました。そして、紙の手順書を複数の人間で共有する場合よりも、複数の人間でDockerfileを使って、本当に構築や運用の省力化ができるかどうかも、ぜひ実際に試して体感してみてください。

(第10回はこちら


古賀政純(こが・まさずみ)

日本ヒューレット・パッカード株式会社 オープンソース・Linuxテクノロジーエバンジェリスト。兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国HPからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。現在は日本HPにて、Linux、FreeBSD、Hadoopなどのサーバー基盤のプリセールスSE、文書執筆を担当。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「CentOS 7実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード



関連キーワード

Docker | CentOS | 攻めの経営 | Linux


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ