sunakan / notes-about-docker

MIT License
0 stars 0 forks source link

コンテナを作ってみよう #2

Closed sunakan closed 5 years ago

sunakan commented 5 years ago

コンテナを作ってみよう

sunakan commented 5 years ago

仮想マシンをたててapt-getで入れてるのは以下

docker-ce
cgdb
cgroup-tools
make
gcc

他にはlibcapをmake installしてる

sunakan commented 5 years ago

コンテナのルートファイルシステムとは

sunakan commented 5 years ago

コンテナのルートファイルシステム = Dockerのbash イメージをテンポラリディレクトリに展開した場所

sunakan commented 5 years ago

ROOTFS = Root File System

sunakan commented 5 years ago

mktempコマンド

$ mktemp -d
/tmp/tmp.TTjn4yYsc3
など適当なディレクトリが/tmp以下にできる
sunakan commented 5 years ago

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
sunakan commented 5 years ago
$ 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'"