1.はじめに
少し前からDockerやkubernetesという言葉を耳にすることが増えてきました。
インターネットで検索したり、実際に触れている人に話を聞いたりなどしてある程度のイメージは掴んでました。
が、実際にDocker/kubernetesの環境が構築できるわけではないので、今回一から学び直して見ました。
参考にした書籍は、Docker/Kubernetes 実践コンテナ開発入門です。
2.Docker
2-1.そもそもDockerとは?
一言で表すと、「Dockerとは、コンテナ仮想化エンジンのこと」を指します。
言葉で表しても伝わりづらいと思いますので、以下の図で一般的なサーバと仮想マシンとDockerの違いについてまとめてみました。
図2.1 一般的なサーバと仮想マシンとDockerの違い
(*)イメージしやすいようにアプリ内には、MWも含めています。
2-2.Dockerのメリット
Dockerのメリットは以下のようなものが挙げられます。
・仮想マシンと比べ、ゲストOSのオーバーヘッドが軽減される
上記の図2.1からわかるように、仮想マシンとの大きな違いは、ゲストOSがなくなっている部分です。
インフラエンジニアの方は気にすることが多いですが、OSの領域もリソースを消費します。
私はもともとこのOS領域のことをあまり考えていないこともあって、実際OS領域は、私の想像以上にリソースを使っているという印象を受けています。
参考がてらOS領域についていくつかあげておきます。
・WIndows Server 2019
・RHEL7
また、仮想マシンを構築する場合は、ゲストOSも構築する必要が出てきます。(イメージファイルがあれば構築する必要はありません。)
DockerならゲストOSを構築する必要がないため、構築にかかるコストも削減できる上に、デプロイも軽量になります。
・MW等のバージョンの違いを検証しやすい
上記にも記載した通りゲストOSを構築せずにアプリケーションを軽量にデプロイすることができます。
また、コンテナをデプロイする際にMWのバージョンも変更することが可能です。
そのため、ローカルPCで通常通りのインストールに比べ、軽量にバージョンの差異を確認することができます。
3.まとめ
Dockerについて学んだことを書きました。
実際に触れてみないとわからないことも多いかと思いますので、実際に触れてみることがオススメです。
この調子でkubernetesについても勉強して自動復旧システム構築を目指していこうこ思います。
何か間違いや指摘事項あれば是非コメントください。