Go言語で自分独自のコンテナを作ろう

コンテナってなんやろか


Posted on 2020年 3月 27日 (金)
Tags golang, container, linux, namespace, cgroups
golang, container, linux, namespace, cgroups

Go言語で自分独自のコンテナを作ろう

Create your own container with Golang。

コンテナとは

こうなっていればコンテナというような明確な定義はない気がする。

コンテナに共通したこと

コンテナについての記載の共通点👇

コンテナとは、ホスト(コンテナの作り主)から隔離されているプロセス

隔離?

プロセスはわかるが、なにが隔離されているのか?

コンテナが隔離されているものは以下の通り。

  • ホストのファイルへのアクセス
  • ホストの他のプロセスへのアクセス
  • ホストのリソース (CPU, RAM…)へのアクセス

どうやって実現?

Linux のカーネルが提供する機能を利用する。

  • ホストのファイルへのアクセス 👉 pivot root
  • ホストの他のプロセスへのアクセス 👉 namespace
  • ホストのリソース (CPU, RAM…)へのアクセス 👉 cgroups

Goじゃなくても

syscall 使えばよいので、ぶっちゃけ shell でオッケーだったりする。

Share


See also