"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

Docker/Kubernetes(k8s)とは何か?と、それらを使うメリットを整理してみた。

Docker(ドッカー)とKubernetesクーべネティス :略称は k8s = k-eights)とは何か?と使うメリットを整理してみます。

使ってみようとしましたが、Windows10 HOMEエディションにはどちらもインストールできず(笑)最後の方はグズグズですけどね。

f:id:arakan_no_boku:20190223212816j:plain

 

 

Dockerとは?

 

Dockerは仮想環境を作成・配布・実行するためのプラットフォームです。

仮想環境ですけど「VMWare」とか「Hyper-V」とは違います。

Dockerは「コンテナ型仮想環境」です。

対して、VMWareHyper-Vは「仮想マシン」です。

仮想マシンはゲストOSを動かします。

つまり、VMWareHyper-Vは「ホストOS上で、別のOSを動かす」仮想環境です。

対して。

コンテナ型仮想環境はゲストOSを動かしません

Dockerは「ホストOS(例えばWindows10)上でミドルウエアやアプリを動かす仮想環境」です。

この違いについては、さくらのナレッジの記事(https://knowledge.sakura.ad.jp/13265/)の図が分かりやすかったので、引用します。

f:id:arakan_no_boku:20181008153431j:plain

 

Kubemetesは何か。

 

一言でいうなら、コンテナ群の運用・管理自動化を行うツールです。

Dockerは「仮想マシン」みたいに、ひとつの仮想環境内ですべて完結しません。

例えば、「Webサーバーコンテナ」「データベースコンテナ」「WordPressコンテナ」みたいに分かれているものを組み合わせてシステムを動かす使い方が推奨のようです。

当然、結構な数のコンテナを管理・運用することになるので

  • アプリケーションコンテナを運用環境にデプロイする
  • 稼働中のアプリケーションコンテナ数を増減させてスケールする
  • バージョンアップ等で追加機能を提供開始する
  • 各コンテナのハードウェアの利用率を制限して稼働率を高くする

みたいな事を効率的にやる必要がでてきます。

この辺の自動化などをサポートするが、Kubemetesみたいです。 

これは、コンテナの数の多い大規模システムでのメリットは計り知れないと思います。

20億個ものコンテナを乗せているGoogleみたいに・・。

あ・・、そういえばKubemetesはGoogleが設計したんでした・・さもありなん。

www.publickey1.jp

とはいえ。

個人的には・・Kubemetesは今のところ、あまり恩恵をうけることはなさげです。

仕事でそういうのを請け負う可能性もゼロではないですが、それなら、その時に覚えればよい話なので、ここからは「Docker」に絞って整理します。

 

Dockerを使うメリット

 

Dockerのメリットでよく書いてあること。

  • 本体をインストールしてあれば、使いたいアプリケーションやミドルウエアが動くイメージファイルをダウンロードしてくれば、即、動かして使える。
  • 仮想マシンと違い、ゲストOSのオーバーヘッドがないので、軽量で高速に動作する。

などなど。

そこはよくわかりますし、十分なメリットだと思います。

でも。

最近はWebサーバーとかデータベースとかのインストールや環境構築も、それほど大変ではありませんから、単に初期設定だけのことなら、それほどメリットは感じません。

 

企業での実運用ではメリットが多い

 

ですが。

企業等で利用するシステムの実運用をベースに考えてみれば、色々とメリットが多いことがわかります。

例えば、こんな点。

  • Dockerイメージの共有によって、メンバ内の開発環境のズレを防止できる。
  • 開発環境で動作確認済の環境を、そのまま本番環境にデプロイできる。
  • アプリケーションのバージョンアップをコンテナを差し替える形で行える。

特に2番目はいいですね。

実際、開発時の各自の動作確認はWindows環境で、本番環境がLinuxというパターンはよくあります。

その場合、開発環境から本番環境にデプロイした時に、同じバージョンのミドルウエアで同じ設定で構築しても、なぜか環境による差異がでて、運用テスト中にあわてて修正する・・なんてことがままあります。

なので、Dockerを使うことで開発・テストを行った環境を、そのまま本番環境にデプロイすることで環境による差異の発生を減らせるなら、保守・運用面では非常に大きなメリットがあります。 

f:id:arakan_no_boku:20181008215853j:plain

 あと、バージョンアップとかの時もそうですね。

開発環境を新バージョンのコンテナにして、十分にテストしたものを、そのまま本番環境にうつして、本番環境の設定の「コンテナ名称」を新バージョンのコンテナに書き換えればバージョンアップリリースができる。

これも、通常手順でシステムを停止して、バージョンアップして、再起動して動作閣員して・・なんてやっている現行手順から見れば、非常に楽でリスクも減らせます。

 

メリットをまとめると

 

つまり。

個人的にちょっと使う位ではわからないですが、企業等で継続的に保守・運用していかないといけないシステムの基盤として考えれば、Dockerによるコンテナ化のメリットは大きなものがある・・・ということみたいです。

システム開発の仕事をやっている限り、どっかで必ず扱うことになりそうですから、一度使ってみて感触はわかっておいたほうがよさそうですね。

 

Windows10にDockerをインストールしてみようとはした

 

最初にお断りしておきますが、Windows10でもHOMEエディションの人は、インストールできないので、やるだけ無駄です。

インストーラを動かすと、こんなメッセージがでてきて終わりです。

f:id:arakan_no_boku:20181010000625j:plain

Windows10Pro か Windows10Enterprise か、Windows server 2016 RTMが必要だよということみたいです。

どうも、Hyper-VをDocker for windowsは使うみたいなので、それがはいってないHOMEはダメだよということのようです。

でもまあ。

せっかくやったのでインストーラをダウンロードするところまで書いときます。

 

Windows版のDockerをダウンロード

 

こちらのサイトから。

f:id:arakan_no_boku:20181009234256j:plain

 このページの右側にある「Please Login To Download」を選びます。

f:id:arakan_no_boku:20181009234529j:plain

ログイン画面がでてくるので、最初にアカウントを作ります。

Create Account から。

f:id:arakan_no_boku:20181009234639j:plain

下記画面で必要事項を入力して、アカウントを作ります。

f:id:arakan_no_boku:20181009234753j:plain

アカウントを作ったら、ログイン画面からログインして、Dockerインストーラをダウンロードします。

ダウンロードファイルは「Docker for Windows Installer.exe」です。

 

最初から、ここをちゃんと読めばよかった

 

Hyper-Vがないとダメなことは、ちゃんとここに書いてありました。

docs.docker.com

最初から読めよな!って感じです。

でも、こちらにはHyper-Vがない環境の場合の逃げ道も書いてあります。

If your system does not meet the requirements to run Docker for Windows, you can install Docker Toolbox, which uses Oracle Virtual Box instead of Hyper-V.

 つまり

システムがDocker for Windowsを実行する要件を満たしていない場合、Hyper-Vの代わりにOracle Virtual Boxを使用するDocker Toolboxをインストールできる。

 ということのようです。

 

Docker Toolbox

 

docs.docker.com

こちらに書いてあるのですが

Legacy desktop solution. Docker Toolbox is for older Mac and Windows systems that do not meet the requirements of Docker for Mac and Docker for Windows. We recommend updating to the newer applications, if possible.d Kitematic.

従来のデスクトップソリューション Docker Toolboxは、Docker for MacとDocker for Windowsの要件を満たさない古いMacおよびWindowsシステム用です。 可能であれば、新しいアプリケーションにアップデートすることをお勧めします。

だそうです。

なるほど。

こちらなら、Windows10のHOMEエディションでも可能そうです。

でも、Docker Toolboxをすぐに導入して、うんぬんは考えてません。

こちらの記事を見る限り、簡単にインストールできそうではありますが、とりあえず、仕事でこちらを使うことはないだろうなと思ったので。

qiita.com

まあ。

今回は一応、やってみた・・・。って感じだけ・・ですね。

それでも、こういう失敗話も情報のひとつ・・ということで(笑) 

ではでは。