隔離された環境(chroot 環境)を用いて,Docker ベースイメージの作成(Ubuntu 上)

ユースケース: Ubuntuの隔離環境(chroot環境)を構築し,効率的な開発環境を実現する(仮想マシンからの移行)

chrootによる環境隔離とdebootstrapを活用し,Ubuntuの軽量かつ堅牢な開発環境を迅速に構築します.

前準備

Ubuntu のシステム更新

Ubuntuでシステムを最新の状態に更新するには, 以下のコマンドを実行します.

Ubuntu のインストール手順は別ページ »に記載

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

Ubuntu の隔離された環境(chroot 環境)の作成(debootstrap を使用)

  1. 必要なパッケージのインストール
    sudo apt -y update
    sudo apt -y install debootstrap schroot
    
  2. chroot環境の構築

    環境設定の詳細

    • システムアーキテクチャ: amd64
    • Ubuntuバージョン: Ubuntu 18.04 (bionic)
    • 環境構築先: /home/ubuntu1804
    • インストールバリアント: minbase と buildd

    インストール完了まで時間を要します

    sudo rm -rf /home/ubuntu1804
    sudo mkdir /home/ubuntu1804
    sudo debootstrap --arch amd64 --variant buildd --include=ca-certificates,apt,wget,sudo bionic /home/ubuntu1804 http://jp.archive.ubuntu.com/ubuntu
    
  3. インストール完了の確認
  4. 環境の動作確認
    sudo chroot /home/ubuntu1804 bash
    uname -a
    exit
    
  5. APTソースリストの設定
    sudo cp /etc/apt/sources.list /home/ubuntu1804/etc/apt/sources.list
    
  6. procfsの設定

    chroot環境でのプロセス管理を可能にするための設定です

    /home/ubuntu1804/etc/fstabに「proc /proc proc defaults 0 0」を追記します.

  7. procfsの動作確認

    以下のコマンドでプロセス情報が表示されることを確認します

    sudo chroot /home/ubuntu1804 bash
    sudo mount /proc
    ps
    exit
    

    * ps -augxコマンドで詳細なプロセス情報を確認できます.

  8. 環境の動作確認

    nanoエディタのインストールとC言語プログラミングの実践を通じて機能を確認します.

    1. chroot環境への移行
      sudo chroot /home/ubuntu1804
      uname -a
      
    2. テキストエディタのインストール
      apt install nano
      
    3. テストプログラムの作成 エディタを使用して,以下のコードを「/tmp/hello.c」として保存します.
      #include<stdio.h>
      int main() {
          printf("Hello,World!\n");
          printf("sizeof(size_t)=%ld\n", sizeof(size_t));
          return 0;
      }
      
    4. プログラムのビルドと実行
      cd /tmp
      gcc -o a.out hello.c
      ./a.out
      
    5. 環境の終了
      exit
      

隔離された環境(chroot 環境)を用いて,Docker ベースイメージの作成(Ubuntu 上)

* 事前にDockerのインストールが必要です.インストール手順は「別のページ」を参照してください.

  1. ベースイメージの作成 「ubuntu1804:base」はイメージの識別子として使用します.
    cd /home/ubuntu1804
    sudo chroot /home/ubuntu1804 bash
    sudo umount /proc
    exit
    sudo tar -cpzf ../ubuntu1804.tar.gz .
    docker import ../ubuntu1804.tar.gz ubuntu1804:base
    
  2. イメージの動作確認

    ubuntu1804:base」イメージを使用してコンテナを起動します.

    エラーが発生しなければ正常に動作しています

    docker run -it ubuntu1804:base /bin/bash
    exit