Docker †
- コンテナ型の仮想化ソフトウェア(LinuxのnamespaceとcgroupといったAPIで実現されている)
- OS(実行環境)とアプリケーションをコンテナイメージとして作成
- Infrastructure as Code(IaC)とImmutable Infrastructure(イミュータブル インフラストラクチャ)を実現する
Docker周辺 †
Docker Compose †
- 複数のコンテナを管理するツール
- Ansibleのようにコンテナ定義を.ymlに定義しておくと、定義通りにコンテナ環境を構築してくれる
参考
Docker Swarm †
- Docker Composerを複数のノード間で管理可能にするツール
- Containerの増減、負荷分散等を考慮したContainerの配置などを行うことができる
- より高度なソフトウェアとして、コンテナオーケストレーションツールのデファクトスタンダードである、Kubernetesがある。
参考
Docker Toolbox †
以前、WindowsやMac環境では、VirtualBox上でコンテナエンジンを動作させる一連のToolKitとして提供されていた。
現在はOSネイティブ(WindowsはHiper-V、macOSはHypervisor Framework)のハイパーバイザ型の仮想化APIが使われている。
参考
Kubernetes †
- Google社のエンジニアによって開発されたオープンソースのコンテナオーケストレーションソフトウェア。
- コンテナをPod(小群)という塊によって管理する。
参考
LinuxKit †
コンテナ向けにカスタマイズされたディストリビューションを作成できるツール
参考
コンテナ技術周辺 †
用語 †
OCI(Open Container Initiative) †
- Dockerやコンテナ技術リーダー企業によってコンテナ標準化を行なうために2015年に設立された組織。
- コンテナのフォーマットとラインタイムの業界標準仕様を策定している。
- Amazon, Cisco, Facebook, Google, Huawei, IBM, Intel, Microsoft, Oracle, Red Hat, VMwareなど、業界大手のハイテク企業が参画している。
CRI(Container Runtime Interface) †
- Kubernetesがコンテナを実行するためのAPI標準仕様。
- CRI作成前は、コンテナとKubernetesの間をブリッジプログラムで繋いでいた。CRIにより、Kubernetesでのコンテナ実行をプラガブルで効率的に実行することができるようになった。containerdやCRI-Oなどがある。これは、High-Level Container Runtimeと呼ばれる。
kubelet ---> CRI (High-Level Container Runtime) ---> OCI (Low-Level Container Runtime)
コンテナライクなVM? †
通常コンテナはホストOSカーネルを共有するが、カーネル部分もコンテナのように分離したコンテナのようなVM?のようなものもある。
コンテナ技術のリンク †
参考リンク †
Docker †
Moby †