コンテナの技術

※ プロセスを分離して proc ディレクトリを mount するとホストの情報を取得できないのでホストとの仮想イーサネット作成で失敗する。

  • namespace
  • root ディレクトリ変更

流れ

  1. $HOME/sample ディレクトリを作成
  2. alpine ファイルシステムを sample に配置
  3. namespace を作成して root ディレクトリ変更
  4. proc ディレクトリ設定
  5. ネットワーク設定

前提

  • ホストは Amazon EC2 Ubuntu 22.04 を使用
  • ホストのプロンプトを host$ 、コンテナのプロンプトを container$ と表記

sample ディレクトリを作成

host$ mkdir ${HOME}/sample

alpine ファイルシステムを sample に配置

$ cd ${HOME}/sample
$ curl -o alpine.tar.gz https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/x86_64/alpine-minirootfs-3.19.0_rc3-x86_64.tar.gz
$ tar xvf alpine.tar.gz

namespace を作成して root ディレクトリを変更

$ sudo unshare --pid --fork --mount --net chroot sample sh

※ Alpine は bash がインストールされていないので sh を使用します。

proc ディレックりをマウント

$ mount -t proc proc proc