この記事は、 VyOS Advent Calendar 2014 の9日目の記事です。
VyOS のコンテナがあったら面白そうということで作ってみました。
作り方
VyOS には debootstrap
が入っていないため ISO から作っています。
基本的には、 vyos/build-ami と Docker 公式ドキュメントを参考にしています。
また、イメージの作成は手元の Ubuntu 14.04 で行いました。
流れは下記の通りですが、シェルスクリプトにしてしまったので、1つ1つは説明しません。
docker
をインストールoverlayroot
をインストール- ISO をダウンロード
- ISO をマウント
- ISO の中身から root パーティションを構築
- イメージビルド用ディレクトリにコピー
- イメージビルド用ディレクトリを圧縮
- Dockerfile を作成
docker build
また、スクリプト内でイメージ名に Docker Hub のユーザ名を含めているため docker login
しておきます。
引数に ISO の URL を指定して実行します。
wget https://gist.githubusercontent.com/higebu/c152e73c20d438e33134/raw/cacc01517e2898e09bd98dd7303693af74b82aff/mkimage_vyos.sh
chmod +x mkimage_vyos.sh
./mkimage_vyos.sh http://mirror.vyos-users.jp/iso/release/1.1.1/vyos-1.1.1-amd64.iso
スクリプトは gist に置いてありますので、興味のある方はご参照ください。
できあがったものは Docker Hub に置いてあります。
使い方
使い方は模索中ですが、下記のようにすると一応起動します。
docker run -d --privileged -v /lib/modules:/lib/modules higebu/vyos:latest /sbin/init
カーネルモジュールが必要なサービスばかりのため、 -v /lib/modules:/lib/modules
でホストのカーネルモジュールを読み込めるようにしています。
--privileged
を付けないと /lib/modules
配下のファイルを読めず、カーネルモジュールが必要なサービスが起動しません。
その後、下記のようにすると vyos ユーザになれます。
docker exec -ti {name} /bin/vbash
su - vyos
configure
などのコマンドも普通に動きます。
ただ、このままだと、 Ubuntu のカーネルモジュールで動いており、パッチを当てている、 VyOS のカーネルモジュールとは別物の可能性もあるので、 VyOS の上で Docker を動かせないかやってみたというのを明日書こうと思います。