【概要】

標準的Linuxの機能・コマンドでコンテナ環境が作成できることをわかってもらうため、C言語などでシステムコールを使うプログラムではなく、コマンドを実行するシェルスクリプトで機能を実装。


コンテナの定義ファイルを用意してそれに従ってコンテナ環境の作成よび起動を行うものとします。



【コマンド】
コマンド		機能
create_mycont.sh	コンテナ環境の作成
start_mycont.sh		コンテナ環境起動
stop_mycont.sh		コンテナ環境停止
remove_mycont.sh	コンテナ環境の削除


【ディレクトリ構成】
conf/	設定ファイル
env/	コンテナ環境／名前空間管理関連
net/	ネットワーク管理関連
res/	リソース制御関連
work/	コンテナ環境動作ディレクトリ


【実行方法】
以下の手順で環境準備をしてから各コマンドを起動する
cd MyCON
./env.sh
. MYENV





【仕様詳細】

コンテナの基本仕様
・全ての名前空間が切り離される
・指定がなければネットワーク接続はない
・デバイスへはアクセス可能でアクセス制御はできない
・ホストとコンテナ間で共有フォルダを持てる
・ポートフォワードの設定が可能　※っホスト外からコンテナへアクセスできる
・作業ディレクトリにchrootする


【】


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cgroupでメモリ制御を行うためには、以下で有効化
（Debianはでデフォルトではメモリの制御が無効になっているらしい）

/boot/firmware/cmdline.txt に

        cgroup_enable=memory

を追加して、再起動。

＜編集前＞
cq@rp4:~/CQ/MyCON $ cat  /boot/firmware/cmdline.txt 
console=serial0,115200 console=tty1 root=PARTUUID=8ebf8f49-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JPcq@rp4:~/CQ/MyCON $

cq@rp4:~ $ ls -l /sys/fs/cgroup/
total 0
-r--r--r--  1 root root 0 Jun 16 18:44 cgroup.controllers
-rw-r--r--  1 root root 0 Sep 17 17:41 cgroup.max.depth
-rw-r--r--  1 root root 0 Sep 17 17:41 cgroup.max.descendants
-rw-r--r--  1 root root 0 Jun 16 18:44 cgroup.procs
-r--r--r--  1 root root 0 Sep 17 17:41 cgroup.stat
-rw-r--r--  1 root root 0 Sep 17 17:38 cgroup.subtree_control
-rw-r--r--  1 root root 0 Sep 17 17:41 cgroup.threads
-r--r--r--  1 root root 0 Sep 17 17:38 cpuset.cpus.effective
-r--r--r--  1 root root 0 Sep 17 17:38 cpuset.mems.effective
-r--r--r--  1 root root 0 Sep 17 17:41 cpu.stat
-r--r--r--  1 root root 0 Sep 17 17:41 cpu.stat.local
drwxr-xr-x  2 root root 0 Jun 16 18:44 dev-mqueue.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 init.scope
-r--r--r--  1 root root 0 Sep 17 17:41 io.stat
drwxr-xr-x  2 root root 0 Sep 17 17:38 proc-sys-fs-binfmt_misc.mount
drwxr-xr-x  2 root root 0 Sep 17 17:38 sys-fs-fuse-connections.mount
drwxr-xr-x  2 root root 0 Sep 17 17:38 sys-kernel-config.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 sys-kernel-debug.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 sys-kernel-tracing.mount
drwxr-xr-x 32 root root 0 Sep 17 17:39 system.slice
drwxr-xr-x  3 root root 0 Sep 17 17:38 user.slice
cq@rp4:~ $


＜編集後＞
cq@rp4:~ $ cat  /boot/firmware/cmdline.txt 
console=serial0,115200 console=tty1 root=PARTUUID=8ebf8f49-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP cgroup_enable=memory
cq@rp4:~ $
cq@rp4:~ $ ls -l /sys/fs/cgroup/
total 0
-r--r--r--  1 root root 0 Jun 16 18:44 cgroup.controllers
-rw-r--r--  1 root root 0 Sep 17 17:45 cgroup.max.depth
-rw-r--r--  1 root root 0 Sep 17 17:45 cgroup.max.descendants
-rw-r--r--  1 root root 0 Jun 16 18:44 cgroup.procs
-r--r--r--  1 root root 0 Sep 17 17:45 cgroup.stat
-rw-r--r--  1 root root 0 Sep 17 17:43 cgroup.subtree_control
-rw-r--r--  1 root root 0 Sep 17 17:45 cgroup.threads
-r--r--r--  1 root root 0 Sep 17 17:43 cpuset.cpus.effective
-r--r--r--  1 root root 0 Sep 17 17:43 cpuset.mems.effective
-r--r--r--  1 root root 0 Sep 17 17:45 cpu.stat
-r--r--r--  1 root root 0 Sep 17 17:45 cpu.stat.local
drwxr-xr-x  2 root root 0 Jun 16 18:44 dev-mqueue.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 init.scope
-r--r--r--  1 root root 0 Sep 17 17:45 io.stat
--w-------  1 root root 0 Sep 17 17:45 memory.reclaim
-r--r--r--  1 root root 0 Sep 17 17:45 memory.stat
drwxr-xr-x  2 root root 0 Sep 17 17:43 proc-sys-fs-binfmt_misc.mount
drwxr-xr-x  2 root root 0 Sep 17 17:43 sys-fs-fuse-connections.mount
drwxr-xr-x  2 root root 0 Sep 17 17:43 sys-kernel-config.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 sys-kernel-debug.mount
drwxr-xr-x  2 root root 0 Jun 16 18:44 sys-kernel-tracing.mount
drwxr-xr-x 32 root root 0 Sep 17 17:44 system.slice
drwxr-xr-x  3 root root 0 Sep 17 17:43 user.slice
cq@rp4:~ $


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



conf/
	コンテナ名

