docker で Ubuntu quantel をインストールして saucy にアップグレードした ― 2013年10月19日
docker を試してみようと、練習がてら Ubuntu をインストールし、リリースされたばかりの saucy にアップグレードしてみました。以下はその記録です。まだ lxc や docker のことをよくわかってないのでピンぼけかもしれません。
docker のインストール
環境は私がデスクトップとして使ってる Ubuntu 13.04 raring です。64bit 環境です。インストール手順はここに書いてあるとおり。
Ubuntu Raring 13.04 (64 bit) - Requirements and Installation on Ubuntu Linux - Docker Documentation
インストールのあと、自分を docker グループに所属させます。そして再ログイン。
Ubuntu のイメージをゲット
$ docker pull ubuntu
これを書いてる時点で 12.04 (precise) と 12.10 (quantel) のイメージがダウンロードされます。
docker で Ubuntu 環境を実行
$ docker run -t -i ubuntu:quantal /bin/bash root@69c5ea1c1e80:/#
ダウンロードした ubuntu イメージのうち、タグ quantel (12.10) が付いた環境で /bin/bash
が起動されます。69c5ea1c1e80
は起動されたコンテナのIDです。
13.04 へのアップグレードの準備
do-release-upgrade
でアップグレードするために、ダウンロードした quantel のママではうまくいかないので、quantel-updates でパッケージを更新し、また、initclt などに細工を行います。
root@69c5ea1c1e80:/# echo "deb http://archive.ubuntu.com/ubuntu quantal-updates main" >> /etc/apt/sources.list root@69c5ea1c1e80:/# apt-mark hold initscripts udev plymouth mountall root@69c5ea1c1e80:/# dpkg-divert --local --rename --add /sbin/initctl root@69c5ea1c1e80:/# ln -s /bin/true /sbin/initctl root@69c5ea1c1e80:/# cat > /usr/sbin/policy-rc.d << EOF > #!/bin/sh > > exit 101 > EOF root@69c5ea1c1e80:/# chmod +x /usr/sbin/policy-rc.d root@69c5ea1c1e80:/# apt-get update : root@69c5ea1c1e80:/# apt-get upgrade : root@69c5ea1c1e80:/# ls -l /sbin/initctl* lrwxrwxrwx 1 root root 9 Oct 18 14:27 /sbin/initctl -> /bin/true -rwxr-xr-x 1 root root 155560 Oct 12 2012 /sbin/initctl.distrib root@69c5ea1c1e80:/# apt-get install update-manager-core python-apt : root@69c5ea1c1e80:/#
raring (13.04) へのアップグレード
root@69c5ea1c1e80:/# do-release-upgrade
質問に答えるなどして進みます。時間かかります。アップグレードしたら、exit コマンド (CTRL + D でも OK) で、コンテナ環境から抜け、コンテナ環境を停止します。
root@69c5ea1c1e80:/# exit
確認
いましがた止めたコンテナを確認しましょう。
$ docker ps -a ID IMAGE COMMAND CREATED STATUS PORTS 69c5ea1c1e80 ubuntu:12.10 /bin/bash 40 minutes ago Exit 0
raring のタグを打つ
さて、この状態 (69c5ea1c1e80
) を「commit
」して、コンテナ名 myrepo/ubuntu
で、raring
のタグを打ちます。
$ docker commit 69c5ea1c1e80 myrepo/ubuntu raring
5bbc0971b9c5
ここで表示された 5bbc0971b9c5
は、commit により作られたコンテナの イメージの ID になります。ここで取得、および、作成したイメージの一覧を表示してみます。
$ docker images
REPOSITORY TAG ID CREATED SIZE
myrepo/ubuntu raring 5bbc0971b9c5 3 seconds ago 820.2 MB (virtual 1 GB)
ubuntu 12.04 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu latest 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu precise 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB)
ubuntu 12.10 b750fe79269d 6 months ago 24.65 kB (virtual 180.1 MB)
ubuntu quantal b750fe79269d 6 months ago 24.65 kB (virtual 180.1 MB)
raring (13.04) の環境に入る
今作ったコンテナ myrepo/ubuntu
のタグ raring
の環境で /bin/bash
を起動します。
$ docker run -t -i myrepo/ubuntu:raring /bin/bash WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4] root@19837860884f:/# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 13.04 Release: 13.04 Codename: raring
saucy (13.10) にアップグレード
root@19837860884f:/# do-release-upgrade
質問に答えるなどして進みます。しばらくかかります。アップグレードが完了したら exit
コマンドで環境から抜けます。そして、今回実行した環境をコミットし、新しいイメージを作ります。
root@19837860884f:/# exit $ docker commit 19837860884f myrepo/ubuntu saucy 21a2d79c3c16
結果
$ docker images REPOSITORY TAG ID CREATED SIZE myrepo/ubuntu saucy 21a2d79c3c16 30 seconds ago 742.4 MB (virtual 1.743 GB) myrepo/ubuntu raring 5bbc0971b9c5 1 hour ago 820.2 MB (virtual 1 GB) ubuntu 12.04 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB) ubuntu latest 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB) ubuntu precise 8dbd9e392a96 6 months ago 131.5 MB (virtual 131.5 MB) ubuntu 12.10 b750fe79269d 6 months ago 24.65 kB (virtual 180.1 MB) ubuntu quantal b750fe79269d 6 months ago 24.65 kB (virtual 180.1 MB) $ docker images -viz | dot -Tpng -o graph.png
参考
コメント
トラックバック
このエントリのトラックバックURL: http://tkusano.asablo.jp/blog/2013/10/19/7015169/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。