コンテナのしくみ

コンテナとは

  • Kernelの機能により、リソースが隔離・制限された空間
  • Kernelから見ると、ただのプロセス

namespace

  • プロセスID
  • ネットワーク(インターフェース、ルーティングテーブル、ソケットなど)
  • マウント(ファイルシステム)
  • UTS(ホスト名 uname(2)が返す値の集合)
  • IPC(セマフォ、MQ、共有メモリなどのプロセス間通信)
  • ユーザー(UID、GID)

cgroups

  • CPU
  • メモリ
  • ブロックデバイス(mmap可能なストレージとほぼ同義)
  • ネットワーク
  • /dev以下のデバイスファイル

コンテナ作成に関係するシステムコール

chroot

unshare

コンテナ作成手順

debootstrap --arch amd64 jessie /var/lib/test_container/jessie-box http://ftp.jp.debian.org/debian
root@hoge:/home/hoge/src/github/rtc# ./target/debug/rtc 
root@test_container:/# pwd
/
root@test_container:/# hostname
test_container
root@test_container:/# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 20268 3304 ? S 13:26 0:00 /bin/bash -l
root 6 0.0 0.0 17504 2128 ? R+ 13:26 0:00 ps aux
root@test_container:/# cat etc/issue
Debian GNU/Linux 8 \n \l

軽量コンテナ

参考書籍

  • ふつうのLinuxプログラミング
  • Linuxプログラミングインターフェース
  • Goならわかるシステムプログラミング
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎

--

--

--

Software engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Takanori Ishibashi

Takanori Ishibashi

Software engineer

More from Medium

libriscv: Multiprocessing for Compute Functions

Compiler Adventures, part 2: Constant Propagation

A blurry photo of a galaxy, with a bright blob in the middle surrounded by fuzzy swirling clouds of gas. Next to it, a crisp and sharp image of the same galaxy, showing many dots of light and and individual clouds where previously there was just a blur of color.

Rust: Encoding and Decoding Base64 Strings using the Windows API

Release multi-target Rust applications with GitLab CI