- [x]名前空間
- [x]バインドマウント
- [x]chroot, pivot_root
- [x]capability
- [ ]cgroup
- [x]Unionファイルシステム
- [ ]veth
- ルートファイルシステムの準備
ルートファイルシステム内にlibcapとbashが必要です。
centos
やubuntu
では公式のイメージに含まれています。
$ docker export $(docker create centos) | gzip > centos.tar.gz
公式のalipne
イメージを利用する場合は自前にインストールが必要です。
docker export \
$((docker rm -f alpine; docker run --name=alpine alpine /bin/sh -c 'apk update; apk add libcap bash') 1>/dev/null 2>&1 && echo alpine) \
| gzip > alpine.tar.gz
- ルートファイルシステムの展開
Vagrantの仮想環境でルートファイルシステムを展開します。
$ vagrant up; vagrant ssh
vagrant$ mkdir centos
vagrant$ tar xzf /vagrant/centos.tar.gz -C centos
- コンテナの実行
展開したルートファイルシステムを利用してコンテナを実行します。
vagrant$ sudo /vagrant/test-pivot_root.sh centos # ~/centosディレクトリをルートファイルシステムとして利用
ちなみにルートファイルシステムを指定しない場合はシステムルート(/
)をルートファイルシステムとしてコンテナを実行します。
vagrant$ sudo /vagrant/test-pivot_root.sh # システムルート(/)をルートファイルシステムとして利用