隔離された環境(chroot 環境)を用いて,Docker ベースイメージの作成(Ubuntu 上)
ユースケース: Ubuntuの隔離環境(chroot環境)を構築し,効率的な開発環境を実現する(仮想マシンからの移行).
chrootによる環境隔離とdebootstrapを活用し,Ubuntuの軽量かつ堅牢な開発環境を迅速に構築します.
前準備
Ubuntu のシステム更新
Ubuntuでシステムを最新の状態に更新するには, 以下のコマンドを実行します.
sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now
Ubuntu の隔離された環境(chroot 環境)の作成(debootstrap を使用)
- 必要なパッケージのインストール
sudo apt -y update sudo apt -y install debootstrap schroot
- 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
- インストール完了の確認
- 環境の動作確認
sudo chroot /home/ubuntu1804 bash uname -a exit
- APTソースリストの設定
sudo cp /etc/apt/sources.list /home/ubuntu1804/etc/apt/sources.list
- procfsの設定
chroot環境でのプロセス管理を可能にするための設定です
/home/ubuntu1804/etc/fstabに「proc /proc proc defaults 0 0」を追記します.
- procfsの動作確認
以下のコマンドでプロセス情報が表示されることを確認します
sudo chroot /home/ubuntu1804 bash sudo mount /proc ps exit
* ps -augxコマンドで詳細なプロセス情報を確認できます.
- 環境の動作確認
nanoエディタのインストールとC言語プログラミングの実践を通じて機能を確認します.
- chroot環境への移行
sudo chroot /home/ubuntu1804 uname -a
- テキストエディタのインストール
apt install nano
- テストプログラムの作成
エディタを使用して,以下のコードを「/tmp/hello.c」として保存します.
#include<stdio.h> int main() { printf("Hello,World!\n"); printf("sizeof(size_t)=%ld\n", sizeof(size_t)); return 0; }
- プログラムのビルドと実行
cd /tmp gcc -o a.out hello.c ./a.out
- 環境の終了
exit
- chroot環境への移行
隔離された環境(chroot 環境)を用いて,Docker ベースイメージの作成(Ubuntu 上)
* 事前にDockerのインストールが必要です.インストール手順は「別のページ」を参照してください.
- ベースイメージの作成
「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
- イメージの動作確認
「ubuntu1804:base」イメージを使用してコンテナを起動します.
エラーが発生しなければ正常に動作しています
docker run -it ubuntu1804:base /bin/bash exit