生き様117. 仮想環境をふんわり考える「Docker vs 仮想コンピューター」
重要:本記事について
本記事には、ハイパーバイザ型とホスト型を混同している重大な瑕疵があります。
これは、白栁の勉強不足からのものです。大変申し訳ありません。
コメント欄での御指摘を頂き、誠にありがとうございました。
「ホスト型」を「ハイパーバイザ型」として説明している箇所については、該当部分について、文中で取り消し線の後、正しい用語を使用する様に訂正を行っています。
また、一部文章で、ハイパーバイザ型を含めた場合に説明が適切ではないかもしれないと考えられる部分があります。
この部分については、取り消し線を付けた上で残してあります。
今後、正しく知識を付けた上で、適切な文章へ直したいと考えております。
ワクチン1回目接種!
先週の木曜日に、COVID-19ワクチンを接種してきました。
まだ初回ですが、初回から副反応も多いという人がいる中、僕は特に大きな副反応はありませんでした。
せいぜい、1日程接種した腕が重く感じたり、1週間程注射を射った部分に痛みが残った程度です。
このコラムを読んでらっしゃる多くの方が、既に接種を終えられているでしょう。
それでも、まだいるかも知れない、これから接種を受ける人の為に、幾つか言葉を残そうと思います。
近くの病院で接種を受ける場合は、インフルエンザワクチン接種と重なってそこそこ待たされるし、終わってからも30分ぐらい待機の必要があるから、時間には余裕を持って行こう!
Dockerって当たり前?
Web系の開発だと、Dockerを使うのが当たり前だそうです。
白栁は、Windowsアプリ開発が主なのであまり縁がありません。
とはいえ「使わないから知らない・分からない」ではこの業界は生きていけません。
それよりなにより、ちょっと前に必要があって仮想環境について調べたことがあります。
ですが、それももう2年以上前のことです。
最近では、 Laravelの入門用開発環境としてHomesteadというものがあるそうです。
今回、改めて仮想環境の知識をアップデートしようとする前に、自分が知っていることを整理しようと思いました。
また、自分が知っているものと比較することで、知識を深める意味合いもあります。
仮想環境とは
そもそもの「仮想環境」という所に軽く触れていきます。
我々が普段利用しているPCの中に、別のPC環境を擬似的に作成して運用することです。
これは、ブラウザやゲームと同じアプリケーションの一種です。
仮想コンピューターの方式として、ハイパーバイザ型とコンテナ型があります。
今回は、それぞれの特徴を、白栁なりに説明していこうと思います。
ハイパーバイザ型 ホスト型
一般的に「仮想PC」と言われた場合、多くの人がイメージするものがハイパーバイザ型ホスト型でしょう。
擬似的に構築されたPCで、動きをシミュレーションするわけです。
結構古くからある形式で、エミュレータの一株と言えるでしょう。
特徴としては「OSの上で動く、別のOS環境がある」ということです。
シミュレーションですので、ある時点の情報を保存したり、ロードすることもできます。
この機能により、同じ環境のサーバーを増やすことも容易でした。
この特性を利用することで、サーバーの処理能力に余裕がでてきた2010年代前半には、
「1つのサーバーで複数の仮想サーバーを運用する」という流行がありました。
今使っているOSの上で、仮想OSを実行するので、GUI操作ができ、普段と余り変化のない操作感で運用できるところは、強みではないでしょうか。
コンテナ型
冒頭で挙げたDockerに代表される仮想化技術です。
最大の特徴は、ベースとなる環境の上に様々な環境(コンテナ)を載せることです。
これにより、複数の環境を着替える事が容易にできます。
極端な例ですが、Laravelで開発していた環境を切り替えて、Goを開発する環境とすることができるわけです。
また、ハイパーバイザ型ホスト型と比較して、軽量であるという点で好まれる部分もあります。
コンテナ型の仮想環境のOSとして、Linuxが利用されています。
その中でも多く選択されていたディストリビューションがCentOSなのですが、
CentOSのサポート終了が発表されました。
今後、どのディストリビューションが、Docker構築の基本になっていくのか、不透明な部分もあります。
既に後継に名乗りを挙げているディストリビューションは幾つかある様です。
しかし、現時点での白栁の知識では、どれが有力化を判断することができませんでした。
現在主流のクラウドコンピューティングとも相性が良いのも、流行の理由でしょう。
ただし、コマンドライン操作のみとなる為、敷居を高く感じてしまう人も一定数居るようです。
特に、環境設定に使用される「YAMLファイル」は、独特の記法から苦手とする人もいるそうです。
僕は全く読めません。
最近では、それぞれの開発言語から、標準的なDockerコンテナイメージが提供されることもあるそうです。
まとめ:仮想環境で何をしたかったか
今回は、白栁がにわか的に齧った知識で仮想環境について整理しました。
ここまで調べた仮想環境で、僕が何をしたかったのか?という話を最後にします。
僕は、自分のPCの環境を複数の環境に分けようと思っていました。
ひとつは、ゲームを遊ぶための環境。
ひとつは、アプリを開発するための環境。
開発環境は、言語ごとに分けられたら最高ですよね!
ということで、一部の開発環境を仮想化するところから始めようと考えました。
僕の用途は並列で動かしたかった為、コンテナ型より、ハイパーバイザ型ホスト型の方が適していた様です。
ですが、Windowsのライセンスが仮想環境分必要で……。
結局、挫折しましたとさ。
ハイパーバイザ型ホスト型も、コンテナ型も、どちらが優れているとは言えません。
それぞれに長所があり、短所があります。
用途に合わせて、適切なものを利用していく事が大事だと感じました。
以上!
ミニコーナー:帰ってきた!!白栁の2ヶ月だけ(ちょっと)ホンキダイエット!
気が抜けたのか、ここ1週間で体重計測を2回しかしていませんでした。
日 | 体重(kg) |
---|---|
10/27 | 94.9 |
10/31 | 95.7 |
11/3 | 95.0 |
先週に比べて増加気味なのは、ちょっと食べ過ぎだからです。
最近、ガツンとくる食べ物が欲しくて……、ついつい大盛りを食べてしまいます。
ダイエット期間中なのだから、我慢しないとなんですけどね。
意識が続かないようです。
気合を入れ直さないといけません。
ITエンジニアの視点で、時事ニュースを5分間で紹介する動画を平日ほぼ毎日公開してます。
「日々の生活の中にエンジニアリングがある」からこそ、
身近な時事ニュースから学ぶことが重要です。
コメント
山無駄
Docker(ドッカー)のことですか?
エンジニアカウンセラー白栁隆司
To:山無駄 さん
盛大にスペルミスしてました。
ご指摘ありがとうございます。
nyuge1631
白栁さんの説明の「ハイパーバイザー型」は「ホスト型」のことですね。
以下のサイトに詳しい説明がありますので、参考になさってください。
https://www.itmanage.co.jp/column/virtualization-server-integration/
匿名
laravelでしょうか。
エンジニアカウンセラー白栁隆司
To : nyuge1631 さん
ご指摘ありがとうございます。
今回、記事を書くにあたって、用語が曖昧だったので調べ直したのですが、間違っていた様です。
しっかりと記事を修正する為、勉強と反映にお時間を頂きますが、修正させて頂きます。
エンジニアカウンセラー白栁隆司
To : 匿名 さん
誤字のご指摘ありがとうございます。修正しました。
Larabel、いつもスペルがわからなくなって、間違えてしまうのですが、今回の「Lavabel」は初めてのパターンでビックリしました。
ここまで間違えるか?と。