Closed sunakan closed 5 years ago
仮想マシンをたててapt-getで入れてるのは以下
docker-ce
cgdb
cgroup-tools
make
gcc
他にはlibcapをmake installしてる
コンテナのルートファイルシステムとは
コンテナのルートファイルシステム = Dockerのbash イメージをテンポラリディレクトリに展開した場所
ROOTFS = Root File System
mktempコマンド
$ mktemp -d
/tmp/tmp.TTjn4yYsc3
など適当なディレクトリが/tmp以下にできる
cgroup、CPU30%、メモリ10MB
$ UUID=$(uuidgen)
$ sudo cgcreate -t $(id -un):$(id -gn) -a $(id -un):$(id -gn) -g cpu,memory:$UUID
$ cgset -r memory.limit_in_bytes=10000000 $UUID
$ cgset -r cpu.cfs_period_us=1000000 $UUID
$ cgset -r cpu.cfs_quota_us=300000 $UUID
$ cgexec -g cpu,memory:$UUID unshare -muinpfr /bin/sh -c "mount -t proc proc $ROOTFS/proc && touch $ROOTFS$(tty); mount --bind $(tty) $ROOTFS$(tty) && touch $ROOTFS/dev/pts/ptmx; mount --bind /dev/pts/ptmx $ROOTFS/dev/pts/ptmx && ln -sf /dev/pts/ptmx $ROOTFS/dev/ptmx && touch $ROOTFS/dev/null && mount --bind /dev/null $ROOTFS/dev/null && /bin/hostname $UUID && exec capsh --chroot=$ROOTFS --drop=cap_sys_chroot -- -c 'exec $CMD'"
コンテナを作ってみよう