とあるIT屋の独白

ITや経営について主に書きます

コンテナの利用について今一度考えてみる

今や環境構築にdockerを使うことも、珍しくなくなってきてると思います。IT関連の記事を見ても、かなりの頻度でコンテナ関連のトピックが取り上げられていて、まだまだホットな領域だなと感じています。ということで、今回は改めてこのコンテナの利用について、書いてみたいと思います。
まずはコンテナとは何かという点。基本的な考え方は仮想マシンと同じで、一つのサーバ(もしくはPC)で別の環境が建てられるものになります。では仮想マシンとコンテナで違いはなにかというと、OSの位置付けになります。仮想マシンでは一環境一OSになりますが、コンテナでは複数環境が一OS上で動きます。これによって、ハードのリソースを効率的に使うことができます。

【コレ1枚で分かる「仮想マシンとコンテナの違い」】
https://www.itmedia.co.jp/enterprise/spv/1612/19/news041.html

ちなみに、dockerは基本Linuxなのですが、ディストリビューションやバージョンの違いは上手いこと吸収してくれます。ので、違うバージョンのLinuxとかでも、動かせるわけです。

【なぜDockerではホストOSと違うOSベースのコンテナイメージが動くのか】
https://qiita.com/kirikunix/items/33414240b4cacee362da

コンテナの利用用途としては、ローカル環境での開発用途という使われ方が、今のところ多いのかなと感じています。それを本番で使うとなると、コンテナの状態やリリースのための準備をする必要がでてきて、そのためのツールが以前に本ブログで紹介したKubernetes( クーベネティス)になります。
https://toaruit.hatenablog.com/entry/2018/05/02/190043

Kubernetesは運用事例もポツポツと出てきてる感じはしますが、ちゃんと運用するにはスキルが求められてきます。下記の記事は、はてなの撤退事例ですが、ちゃんとエンジニアをつけないと自前での運用はかなり厳しい感じを受けます。

Kubernetesの自前運用は難しい? はてなの撤退事例】
https://www.atmarkit.co.jp/ait/spv/1911/08/news009.html

もちろんAWSGCPで、マネージドサービスがあるので、自前でやるよりも楽な環境はあるかなとは思います。ただ、それでもKubernetesの機能自体は日々更新されていて、それなりにキャッチアップや運用は手間がかかる気はしています。
Kubernetesを使うかどうかは、下記の記事にあるようなメリデメを、一度検討してみるのもよいかなと感じます。今のPaaSはコードをアップすれば動くものがたいていなので(内部的にはコンテナらしい)、運用の楽さや利用コストなど比較して、環境を選ぶべきなのかなと。

Kubernetes、PaaS、Serverlessのどれを選ぶのか? 機能比較と使い分けのポイント】
https://thinkit.co.jp/article/14044