見出し画像

#54 Dockerアウトプット

こんにちは、hiroです😃
本日も早速アウトプットをしていきたいと思います!
アウトプット前の小ネタ、サボってすみません!

Dockerの概要について

・Dockerとは、 "コンテナ" と呼ばれる仮想化のための技術の事。
・Dockerを使う理由は、以下の3点の観点から。
 ①ポータビリティ
    ②オーバーヘッド
    ③immutable infrastructure

①ポータビリティ(可搬性・移植性)
特定の環境をパッケージングし、どの環境でも動く事を保証する。
任意のタイミングの状態で1つのスナップショットとして保存する。
スナップショットは開発者やステージング、本番環境へ配布する事が可能。
②オーバーヘッド(システムへかかる負荷・余分に費やされる処理時間)
Linuxカーネルの機能を用いて1プロセスとして隔離された環境を実現するため、VM型(物理レイヤーから仮想化をする)の仮想化と比較し、少ないオーバーヘッドで環境を実現できる。
③Immutable Infrastructure(インフラを管理する手法の一つ)
インフラを不変なものとして扱うアプローチ。
従来のインフラはライブラリのアップデートや新しいコードの追加時に、サーバの操作を行い変更を加えて実現していた。
Dockerには "Dockerfile""image" という機能が標準で搭載されている。"Dockerfile" は、Infrastructure as Codeとしての機能。インフラの構成をコードに落とし込み宣言的に環境を構築する手法。 "image" は、特定の時点のスナップショットとしての機能を提供。


VMとDocker

VMコンピュータ自体を仮想化。Dockerプロセスを仮想化。プロダクトの要件に応じてVMとDockerを選定する必要がある。
・VM(Virtual Machine)は、ハードから上、ハード・カーネル(OS)・ユーザースペースの低レイヤーから仮想化を行う(物理的な制限にとらわれず、ソフト的に統合・分割する)ための技術。
・Docker(コンテナ)は、Linuxカーネルの機能を用いた技術。 " cgroup " 、  " namespace "" Capability " の様な機能を組み合わせて実現。VMと比べ、高速かつ軽量な仮想化を実現。

cgroup(Control Group)
メモリ・CPUのような計算リソースを隔離するための機能。コンテナへリソースの割り当てと制限を行う。
namespace
cgroupと同様、隔離のための技術。プロセスやネットワーク、ファイルアクセスなど複数の種類があり、それぞれが異なるリソースの隔離を行う。
Capability
スーパーユーザー(ログイン時のホームディレクトリがシステムのルートディレクトリ)としての機能を制限するための機能。DockerコンテナへHostOSのrootユーザーの権限を制限し、最小限の権限を付与/管理する。


ネットワーク関連の用語と役割も覚えていかないとですね!
前職はIT業界の営業だったため、言葉自体はSEあたりが使っていたのを聞いていたのですが、詳細は学習出来ておりませんでした。。。後悔!


本日も最後まで読んで頂き、ありがとうございました!🙇‍♂️


参考資料
入門 Docker

この記事が気に入ったらサポートをしてみませんか?