2013-12-13(金) [長年日記]
■ Dockerで自分専用のDebianイメージを作る
春ごろからDockerのことをちょくちょく目にするようになって(ということは今さらいちいち説明しなくても良いということだ)、触ってみないとなーと思いつつもう12月だ。モチベーションが上がらなかったのは、自分がクラウド上に同一イメージのサーバをばんばん作っては壊すような仕事をしているわけじゃないというのが大きくて、学んだところで使うあてのない技術は後回しになって当然だ。
しかし、naoyaさんのポータブルなWebアプリケーションという記事を読んでピンときたので、ようやく重い腰を上げた。ホビーで書いてるプログラムはあいかわらず個人ないし小規模なグループで使うことを前提にすることの多いおれみたいな人が、サーバアプリケーションを簡単に配布できる仕掛けとしてDockerのようなコンテナ型仮想マシンを用意するという未来はけっこうアリじゃね?
いつも使いのDebianへの導入はDebian(wheezy)でdockerを動かす。 - .h2oのお気楽日記を参考にした(たぶん公式サイトのUbuntu用のインストール解説と同じ手順)。あとは触ってみるだけなんだけど、日本語でまとまってるブログ記事なんかはどれも微妙に省略されてたりしてよくわからん感じなので、公式サイトのInteractive commandline tutorialをやってみたらこれがすげーわかりやすいの。いやー、こんなすばらしいチュートリアルは初めてみたよ。というわけでざっくり理解したので、自分のイメージを作りたい……のだが。
Docker IndexをみるとubuntuはDockerの公式イメージがあるみたいだけど、Debianのはない。個々のユーザが公開しているのはあるみたいだけど、いやいや、どこの馬の骨が作ったのかもわからんようなOSイメージなんて使わんだろふつー。
というわけで、Dockerのイメージをゼロから作る方法を探す旅へ(いきなり寄り道)。そんな面倒な話ではなく、Githubにdotcloud/docker-debianという公式リポジトリがあり、そこにcontrib/mkimage-debian.shというコマンドがあるのだった。これを実行すれば良い:
% sudo ./mkimage-debian.sh tdtds/debian wheezy ...けっこう待たされる... % sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE tdtds/debian latest fd6347c9b5d1 About an hour ago 154.3 MB tdtds/debian wheezy fd6347c9b5d1 About an hour ago 154.3 MB tdtds/debian 7.2 fd6347c9b5d1 About an hour ago 154.3 MB % sudo docker run tdtds/debian echo hello! WARNING: IPv4 forwarding is disabled. hello!
できた。「IPv4 forwarding is disabled」はよくわからんのであとで調べる。あとはこれをDocker Indexに登録しておけばどこからでも入手できるようになるのかな:
% sudo docker push tdtds/debian ...Docker Indexのユーザ名/パスワードなどが聞かれる...
で、こんな感じに。
ついでに、Docker 0.7で実行するとtagコマンドの書式に非互換があると怒られるので、修正したものをpull requestしておいて、今日はここまで。