orangeitems’s diary

40代ITエンジニアが毎日何か書くブログ

インフラエンジニアがDocker、Kubernetesを最短で学ぶ方法を考えた

f:id:orangeitems:20180615004017j:plain

 

そろそろDockerはじめる?

Docker。2013年にオープンソースとして発表されてから紆余曲折のあった分野です。そこから5年経っていますが、基幹システムに入り込むまでには至らず、多くのインフラエンジニアは様子見をしているのではないでしょうか。ただ、どうもWebサービス界隈はもう使っているというし、ベンダーは続々とKubernetesサポートのソフトウェアやサービスを出してくるし、ニュースもどんどん出てくるし、困ったなあと思っている人は一定数いらっしゃると思います。

私もその一人です。

で、今からどうやって勉強していくかをまとめてみました。ご参考まで。

 

経緯を知る

Dockerの歴史をまとめようかと思いましたが、下記の記事を読むのが一番効率的です。一字一句頭に入れましょう。

www.sbbit.jp

 

もっとかみ砕きます。

・コンテナの標準規格はOpen Container Initiativeによる「OCI」です。あくまでも規格であり実装ではありません。OCIをダウンロードはできません。

・OCIを実装したものがコンテナランタイムです。昔はdockerしかありませんでした。今はOCI準拠のコンテナがたくさんあります。文中のcri-oもその一つです。

・コンテナランタイムをコントロールする、オーケストラレーションの事実上の標準規格はCloud Native Computing Foundationによる「kubernetes」です。これは実装です。

・「kubernetes」とコンテナランタイムの会話の規格は、これもCloud Native Computing Foundationによる「CRI」です。これは規格であって実装ではありません。

 ということで、コンテナランタイムはdocker一択だったのが、OCI準拠していてCRIが喋れれば、Dockerである必要はなくなってしまいました。オーケストレーションはkubernetes一択、そういう風に覚えておけば間違いありません。

 

Docker社の立場

もはやコンテナランタイムとしてのDocker自体はオープンソースのためビジネスになりません。そしてオーケストレーションとしてはKubernetesに標準の座を持っていかれてしまいました。

Docker社は、Docker Enterprise Editionという有償バージョンを出して何とかビジネスをつなぎとめようとしてるように見えます。

 

Docker EEはなんと複数のKubernetesをまとめて管理できることになりました。

www.publickey1.jp

 

そして、KubernetesのサポートをLinuxだけではなくWindowsまで広げました。

www.publickey1.jp

 

一方、コンテナランタイムとしてのDockerも強化し、GUIをつけるとのこと。なんとかDockerコンテナランタイム実装者としての主導権は離したくないというふうに思えます。

www.publickey1.jp

 

Docker EEがマネタイズの方法だとするとこれはあまり分がよくありません。それなら各ベンダーのKubernetes実装に流れてしまうのではないか。例えばAWSでもAzuleでもGoogle CloudでももうKubernetesが動いています。またはソフトウェアとしてのKubernetes実装もRedhatやVMware、IBMなどが製品化しています。

 

案の定Docker社大丈夫?という話になっています。

techtarget.itmedia.co.jp

 

今年3月にはDocker創業者が日常業務から引退してしまいました。

japan.zdnet.com

 

・・・というふうに、Dockerビジネス自体は拡大しているもののDocker社にはダイレクトに収益拡大が及んでいないという状況は知っておいたほうがいいと思います。

DockerブームなのにDocker社が中心にいないという皮肉な状態と言えます。もし買収されるとすると、どの企業が買収するかで大きく各社のパワーバランスが変わってきそうですね。

 

コンテナを本番で利用するには

インフラエンジニアの立場で整理してみます。かつ、オンプレミスの場合で考えます。クラウドですと既に動いていますので。

上記の経緯からすると、何らかのコンテナランタイムと、Kubernetes実装がセットになっている有償のソフトウェアを購入して設計すべきだと思います。

もちろんオープンソースなので、Docker CE(無償版)とKubernetesのバイナリをかき集めれば動かないこともないでしょうが、これはLinuxカーネルと各種プログラムをかき集めて自分専用のLinuxディストリビューションを作るぐらい大変なことだと思います。

いくつかソフトウェアが出ていますのでご紹介します。

 

Pivotal Container Service(VMware)

[速報]VMware、vSphere上にコンテナ環境を自動構築する「Pivotal Container Service」発表。Google Container Engineとのポータビリティ実現。VMworld 2017 US - Publickey

 

VMware Integrated OpenStack with Kubernetes(VMware)

VMware Integrated OpenStack 4.0 リリース ノート

 

Red Hat OpenShift(redhat)

OpenShift

 

Azure Stack における Azure Container Service (AKS) (Microsoft)

Azure Stack における Azure Container Service (AKS) | Azure ロードマップ | Microsoft Azure

 

IBM Cloud Private (IBM)

IBM Cloud Private - Japan

 

それでも何とか無償の範囲で構築してみる

Kubernetes on CentOS on ESXi 環境を構築してみた - yuu26's memo

 

 

ほかにもいろいろありますが、日本にいたら上記が主な選択肢になるのではないか・・と思います。

 

オンプレミスで構築するのではなく、パブリッククラウドで十分!という場合はもちろん上記ソフトウェアの存在を考える必要なく、いきなり利用することができます。しばらくはパブリッククラウドで試して運用を確認したら、オンプレミスに移るというのは十分に考えられそうなスタイルだと思います。

 

さてどうすべき?

まずは、この本で基礎知識をつけましょう。

プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化 単行本(ソフトカバー) – 2018/4/11

前半はDocker自体の情報です。

後半はGoogle Cloud Platformを使うようです。ここでKubernetesの使用感が得られます。

 

コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤 単行本(ソフトカバー) – 2018/3/15

こちらの本はKubernetes寄りの本で、パブリッククラウドだけではなくソフトウェアのほうもカバーしています。

 

ひとまず、私としては戦略がまとまったので、時間を作って上記の本を見ていきたいと思います。もはやコンテナから逃げられなくなった人は、上記の本で身に着けていったらいかがでしょうか。両方とも今年出た本のため情報も新鮮です。