コンテナ技術とは?DockerとOCIコンテナの仕組みを解説

コンテナ技術の仕組みを解説。namespace・cgroup・OCI 標準がどのように機能するか、なぜコンテナが現代のアプリケーションデプロイに不可欠かを学べます。

Read in: en
コンテナ技術とは?DockerとOCIコンテナの仕組みを解説

概要

コンテナ技術についてのまとめ。 Dockerを使わずにコンテナをつくって触ってみる。

コンテナとは

コンテナの歴史

1979年 UNIX OSにchrootが登場。

2000年 FreeBSD jailsがFreeBSD 4.0に登場。chrootの発展系。

2001年 VServer Projectを通じてLinuxにもLinuxコンテナのベースとなる技術が登場。

2004年、LXC1.0がリリース。 Linux Containers

2008年、Dockerが登場

コンテナ技術は上記以外にもVirtuozzo、OpenVZ、HP-UX Container、Solaris Containerなど存在する。

コンテナと仮想化の違い

bmf-tech - Dockerとはにもざっくりまとめている。

コンテナ技術を実現するためのLinuxカーネルの機能

Kernel namespaces

Apparmor and SELinux profiles

Seccomp policies

Chroots(using pivot_root)

Kernel capabilities

CGroups(control groups)

Dockerのコンテナ技術

以前までDockerはlxcを使っていたが、v0.9からgoで実装されたlibcontainerを使っているらしい。(cf. Docker blog - DOCKER 0.9: INTRODUCING EXECUTION DRIVERS AND LIBCONTAINER github - opencontainers/runc/libcontainer/

標準仕様

OCI(Open Container Initiative)

Open Container Initiativeはコンテナとランタイムに関する業界標準の作成を目的として組織。

以下の仕様を定義している。

OCIはローレベルランタイムの仕様に関わっている。 ex. runC、gVisor、Kata Containers、Nabla Containers etc...

CRI(Container Runtime Interface)

CRIは、kubeletとコンテナランタイム間の通信のインタフェースを規定している。

CRIはハイレベルランタイムの仕様に関わっている。 ex. docker、containerd、cri-o

まとめ

LTした

Makuake LT Party(社内LT大会)にてLTをした。

speaker-deck - コンテナ完全に理解した

参考

Tags: Docker libcontainer lxc lxd コンテナ
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事