学習用のなんちゃってDocker runtime
$ vagrant up
$ vagrant ssh
$ sudo su -
# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.10 (Groovy Gorilla)"
...
# cd /vagrant/libs
# python3 ./setup.py install
// インストールできているかの確認。linuxが出てくればOK
# pip3 list | grep linux
# cd /vagrant
# pipenv install --system
# ./bocker pull ubuntu
// or タグを指定
# ./bocker pull ubuntu:latest
# ./bocker run ubuntu /bin/bash
コンテナから見ると、自身にPID = 1 が割り当てられている
host (VM)
# ps a
PID TTY STAT TIME COMMAND
698 tty1 Ss+ 0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
...
20414 pts/0 S 0:00 -bash
20559 pts/0 S 0:00 /usr/bin/python3 ./bocker run --memory 100M ubuntu /bin/bash
...
20587 pts/1 R+ 0:00 ps a
container
# ps a
PID TTY STAT TIME COMMAND
1 ? S 0:00 /bin/bash
24 ? R+ 0:00 ps a
host (VM)
# hostname
vagrant
# hostname newhost
# hostname
newhost
container
# hostname
ubuntu_latest_e18ee394-791f-4df6-9833-2245f8fd5324
# hostname container
# hostname
container
host (VM)
# hostname
newhost
host (VM)
# touch /a.txt
# ls / | grep 'a.txt'
a.txt
container
# ls / | grep 'a.txt'
// nothing
# touch /b.txt
# ls / | grep 'b.txt'
b.txt
host (VM)
# ls /var/opt/app/container/ubuntu_latest_e18ee394-791f-4df6-9833-2245f8fd5324/cow_rw/ | grep 'b.txt'
b.txt
host (VM)
// 1コアの25%までに制限
# ./bocker run --cpus 0.25 ubuntu /bin/bash
host (VM - another terminal)
// CPUの状況をグラフィカルに表示するかっこいいツールのインストール
# pip3 install s-tui
# s-tui
container
# yes > /dev/null
host (VM)
# ./bocker run --memory 100M ubuntu /bin/bash
host (VM - another terminal)
$ sudo su -
# htop -d 0.3 -p {pid}
container
# /dev/null < $(yes)
yes: standard output: Broken pipe
Killed