Help us understand the problem. What is going on with this article?

Docker + KVM 上で Xubuntu を動かす

More than 3 years have passed since last update.

動機

以下のような流れで、docker上のKVMで、Xubuntuを動かそうと試みました。
1. docker上で動くxfce環境を構築しようとする
2. gauthierc/dockerspicexfce4などを試すも、恒常的に使うのは辛そう 1
3. やっぱりデスクトップは仮想マシンにするか!
4. 失敗してもいいように、docker上でKVMを試そう

仮想デバイスを準備する

まず仮想マシンで利用する仮想ディスクを ホストに作成します。サイズは100GBです。

$ dd if=/dev/zero of=/mnt/vm/xubuntu/primary.raw bs=10M count=10k
$ ll -h /mnt/vm/xubuntu/primary.raw
-rw-rw-r-- 1 foo bar 100G Feb 14 20:16 /mnt/vm/xubuntu/primary.raw

次に、Xubuntuのインストールイメージをダウンロードして 仮想ディスクと同じディレクトリに置きます。

$ wget http://ubuntutym2.u-toyama.ac.jp/xubuntu/14.04/release/xubuntu-14.04.3-desktop-amd64.iso
$ mv xubuntu-14.04.3-desktop-amd64.iso /mnt/vm/xubuntu/

docker-compose.yml を記述する

Docker Hubにて既存イメージを探したところ、ianblenke/kvm が良さそうでしたのでこれを使わせてもらうことにします。

  • コンテナを作成するだけでKVMの実行環境が整い、
  • コンテナ作成時にパラメータを渡すと それがKVMのパラメータとして実行され、仮想マシンが作成される

という代物です。ありがたい。
必要なパラメータが多いので、docker run ではなく 最初からdocker-composeを使います。

docker-compose.yml
xubuntu:
  image: ianblenke/kvm
  container_name: xubuntu
  tty: true
  privileged: true
  mem_limit: 600000000
  ports:
    - "5900:5900"
  volumes:
    - /mnt/vm/xubuntu:/mnt/vm/xubuntu
  command: "/run.sh  \
    -name xubuntu -smp 2 -m 512  \
    -vnc :0  \
    -k ja \
    -cdrom /mnt/vm/xubuntu/xubuntu-14.04.3-desktop-amd64.iso  \
    /mnt/vm/xubuntu/primary.raw"

コンテナが /dev/kvm/dev/net/tun にアクセスするため、特権モード(privileged)を有効にします。また、仮想マシンはVNCを使って操作するため、5900番ポートを開けます。

run.sh のパラメータが そのままqemu-kvm のパラメータとして渡ります。各パラメータの意味はこちらが参考になります。

コンテナを作成し、仮想マシンにxubuntuをインストールする

docker-compose up でコンテナ作成し、結果を確認します。

$ docker-compose up -d xubuntu
Creating xubuntu
$ docker-compose ps xubuntu
      Name             Command             State              Ports
-------------------------------------------------------------------------
xubuntu            /run.sh -name      Up                 3389/tcp, 0.0.0.
                   xubuntu -smp ...                      0:5900->5900/tcp

コンテナが作成されました。同時に仮想マシンも立ち上がっているはずなので、別のホストからVNCで繋いでみます。VNCの接続先として指定するのはホストのIPアドレスです。
Install.png

Xubuntuのインストールイメージで仮想マシンが起動しています! このまま仮想ディスクにXubuntuをインストールします。

(インストール作業は 他の環境と同じなので割愛)
vnc.png

無事Xubuntuが起動するようになりました。Docker、KVM、Xubuntuのうちどれが寄与しているのかわかりませんが、とにかく起動が早いです。
Xubuntuをシャットダウンするとコンテナも停止します。Xubuntuをリブートしたときはコンテナは動作したままです。

仮想マシンの構成を変更する

インストールイメージがマウントされたままなので、これを仮想マシンの構成から外します。また、(個人的に)WAN越しにデスクトップを使うことが多いため、VNCでなくSPICEで仮想マシンを操作できるようにします。

docker-compose.yml
xubuntu:
  image: ianblenke/kvm
  container_name: xubuntu
  tty: true
  privileged: true
  mem_limit: 600000000
  ports:
    - "5900:5900"
  volumes:
    - /mnt/vm/xubuntu:/mnt/vm/xubuntu
  command: "/run.sh  \
    -name xubuntu -smp 2 -m 512  \
    -spice port=5900,disable-ticketing \
    -vga qxl \
    -k ja \
    /mnt/vm/xubuntu/primary.raw"

-vncオプションを-spiceに変更し、-cdromオプションを削除しました。
また、-vgaオプションをデフォルトのstdからqxlに変更しています。2
一旦コンテナを停止し、docker-compose up -d xubuntu で再起動するとSPICEで接続できるようになりました。
spice.png

以上


  1. そもそも "恒常的に使う" "デスクトップ"を docker上で動かすのが少しズレてるんだと解釈しています。 

  2. stdのままだと、WindowsのSPICEクライアント(virt-viewer)でマウスカーソルが表示されなかったため qxlに変更しました 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした