Create your own container with Golang
コンテナとは
こうなっていればコンテナというような明確な定義はない気がするコンテナに共通したこと
コンテナについての記載の共通点👇
コンテナとは、ホスト(コンテナの作り主)から隔離されているプロセス隔離?
プロセスはわかるが、なにが隔離されているのか?コンテナが隔離されているもの
- ホストのファイルへのアクセス
- ホストの他のプロセスへのアクセス
- ホストのリソース (CPU, RAM...)へのアクセス
どうやって実現?
Linux のカーネルが提供する機能を利用する。
- ホストのファイルへのアクセス 👉 pivot root
- ホストの他のプロセスへのアクセス 👉 namespace
- ホストのリソース (CPU, RAM...)へのアクセス 👉 cgroups
Goじゃなくても
syscall 使えばよいので、ぶっちゃけ shell でオッケーだったりする