2014年8月22日金曜日

docker でハマったところ

今年に入って賑やかになってきたDocker界隈ですが、そろそろこのビッグウェーブに乗るしかなくなってきたため、入門してみました。

その上で、ハマった部分などを整理してみようと思います。

 

DNSの設定

ubuntuのコンテナを作成するため、下記のようなDockerfileを作成。

 

単純にパッケージの最新化を行っているだけなので、失敗するはずが無いと思っていたら、apt-get updateを発行している部分で下記のようなエラーが発生 

Err http://archive.ubuntu.com trusty InRelease
Err http://archive.ubuntu.com trusty-updates InRelease
Err http://archive.ubuntu.com trusty-security InRelease
Err http://archive.ubuntu.com trusty Release.gpg Could not resolve 'archive.ubuntu.com'
Err http://archive.ubuntu.com trusty-updates Release.gpg Could not resolve 'archive.ubuntu.com'
Err http://archive.ubuntu.com trusty-security Release.gpg Could not resolve 'archive.ubuntu.com'
Reading package lists...
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/InRelease
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg Could not resolve 'archive.ubuntu.com'
W: Some index files failed to download. They have been ignored, or old ones used instead.

 

どうも名前解決できていないようなのですが、ローカルのUbuntuで試してみても大丈夫・・・。 はてなんぞや?と悩んでいたら、全く同じエラーが出ている方がいました。

Docker on Ubuntu 14.04 - Could not resolve 'archive.ubuntu.com'

 

要するに、/etc/default/docker.ioの

#DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4"

のコメントアウトを外して、DNSサーバを明示的に指定しなさいってことでした。

ホストのDNS設定を勝手に使ってくれるものだと思っていたので、長いことハマってました・・・。

 

パッケージ名

Ubuntuの標準リポジトリでは、すでにdockerという別のパッケージが存在している。

docker - System tray for KDE3/GNOME2 docklet applications

ということで、ここでいうところのdockerはdocker.ioというパッケージ名となっております。

なにも調べないままに、

sudo apt-get install -y docker

としてしまい、X関連のパッケージがインストールされてしまいビビるという事案が発生しました。

 

 

こうやって見てみるとDNSサーバの設定で長々とはまっていただけで、いうほどハマりどころはなかったですね・・・。

とりあえず簡単そうなところで、Growthforecast のDockerfileを作ってみました。

golaboratory/docker-growthforecast

 

これから開発で使用するサーバ系をひと通りdocker上に乗っけてみようとしているので、随時増やしていこうかと考えております。

 

2014年1月13日月曜日

Packer 0.5.0以降のテンプレートに対応する

自分はPackerをhomebrew経由でインストールしているわけですが、久しぶりにupdateしてみたら、packer 0.5.1が来ていたので、早速インストールしたらハマりました。

$ packer build --only=virtualbox template.json
Failed to create build 'virtualbox':

No builder returned for name: virtualbox

 

あれ?テンプレートの定義変えてないよな?

と思いつつ、エラーメッセージでぐぐってみたら、同じ現象にあたっている人がいたので、その方の対応を参考にさせてもらいました。

 

Packer ではまる - Memo


packer 0.5.0以降から、『virtualbox』や『vmware』は『virtualbox-iso』や『vmware-iso』の様に、サフィックスとして『-iso』とつける必要があるようです。

とりあえず、template.jsonの該当する部分に『-iso』を付与することで、上記のエラーは解消出来ました。


よくよく公式のドキュメントを見てみると、『packer fix』 というコマンドが増えていることに気が付きました。

どうもtemplate.jsonの定義を0.5.0以降用に変換してくれるようです。


$ packer fix template.json > template.json

 

やっぱり公式のドキュメントはちゃんと読んでおかないとダメですね・・・。

 

とりあえず、githubに公開中のテンプレートは0.5.0以降に対応させてみました。

golaboratory/my-packer-template-files

2014年1月11日土曜日

HTML5 でインラインSVGの要素をいじってみる

お仕事でHTML5のインラインSVGを触る機会があったので、簡単に備忘録として。

今までAdobeのSVG Viewerとか使わないとできなかったことが、HTML上でできるようになっているようです。

しかもHTMLの要素へのアクセスとほぼ同じにアクセスできるというので、簡単なサンプルを組んでみました。

 

◯とりあえずサンプル

はい素敵!

インラインSVGであれば、HTMLと同様に、getElementByIdでエレメントを取得でき、addEventListenerでイベントリスナーの設定も出来てしまう。

iPadやandroidタブレットで表示して、ピンチイン/ピンチアウトしても当然SVGなので、きれいなベクターデータとして表示されます。

ただ、今回のお仕事以外で活用できそうな場面が思いつかないなぁ・・・。