とよぶ

歌いながらコード書いてます

最近Dockerが買収したKitematicを使ってMacのGUIでローカルDockerコンテナを立ち上げる

最近レガシー芸人から卒業することが決まったので、ここに来てやっとDockerを触り始めたところです(遅いっ)。

さて、Dockerを始めるに際して、色々調べていたんですが、
DockerコンテナをGUIで立ち上げてられるKitematicというツールがあって、最近Dockerに買収されたとのことです。
(ちなみにKitematicはカイトマティックと読むらしい)

Windowsはまだサポートされてなくて、近日対応予定とのこと。

blog.docker.com

今回はこれで「Jenkinsのimageからコンテナを立ち上げて、Jobを作って実行する」ところまでをやりたいと思います。

環境

  • Mac OSX 10.9.5 Mavericks
  • Kitematic 0.5.13

Kitematicのインストール

以下からzipをダウンロード。
Download Kitematic

展開して /Applications ディレクトリに配置します。

アプリを起動して初期環境を整える、、、が、コンテナに接続できない

アプリを立ち上げると、初期設定が行われる。

ちなみにKitematicのアプリはReactで書かれているみたい。

github.com

初期設定は具体的には

  1. VirtualBoxが無ければインストール
  2. docker, docker-machineのバイナリを配置

をやっているよう。
事前準備要らずとか何たるホスピタリティ。

が、ここで問題が発生する。
99%まで準備ができたと表示されていたのが、エラー画面になる。

f:id:takasing:20150409125230p:plain

Cannot connect to the Docker Engine. Either the VM is not responding or the connection may be blocked (VPN or Proxy)

( ゚д゚)ポカーン

一応Known Issuesがあったので確認してみると、
Known Issues

それらしき物があったので試してみるも、createした後にアプリを起動しても真っ白なまま。

コンテナに接続できない場合の解決策

どうやらネットワーク起因のエラーっぽいので、調べてみるとルートを追加しろという人がいた。

Cisco Anyconnect VPN Collision · Issue #254 · kitematic/kitematic · GitHub

確かに、VPN接続するためにAnyConnectを入れているし該当しそうなので、ネットワーク周りを確認してみる。

docker-machineを確認してみる。

$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376

docker-machineは生成されていて、そいつは192.168.99.XXXのネットワークにある。

一方ネットワークインターフェースは

$ ifconfig
...
vboxnet1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:01
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
...

つまりエラー内容からするに、Kitematicが用意したVirtualBoxのboxにつなぎにいけていないのでは。

なのでルーティングテーブルを確認してみる。

$ netstat -nr | grep 192.168
$ 

はい無いー。

というわけで以下のコマンドを打ちルートを追加。

$ sudo route -nv add -net 192.168.99 -interface vboxnet1

これでアプリを再起動して、ここで初めて初期設定が完了。
疲弊した。

使ってみる

早速コンテナを立ち上げてみる。

Kitematicを起動したらまずRecommendedなイメージが表示されているので、その中からJenkinsを選択し、「Create」を選択。
f:id:takasing:20150409131355p:plain

これだけでDockerコンテナが立ち上がり、すぐにJenkinsが使えるようになります。
すごい。

「Web Preview」のサムネをマウスオーバーして見ると、「Open in Browser」と出るので、クリックするとブラウザでJenkinsの画面が開きます。

f:id:takasing:20150409131638p:plain

JenkinsのJobを作りたいところですが、その前にJenkinsがキックするスクリプトを用意したいので、適当なスクリプトを以下のようにして用意します。
ちなみにJenkinsのホームディレクトリは /var/jenkins_home です。

$ docker exec -it jenkins bash
jenkins@fef30c1fcb42:/$ mkdir /var/jenkins_home/scripts
jenkins@fef30c1fcb42:/$ cat << EOT > /var/jenkins_home/scripts/hello.sh
> #!/bin/bash
> echo Hello world.
> EOT
jenkins@fef30c1fcb42:/$ cat /var/jenkins_home/scripts/hello.sh
#!/bin/bash
echo Hello world.

後はブラウザからJenkinsでJobを作って実行してあげれば終了。

f:id:takasing:20150409132303p:plain

問題点

RecommendedされているイメージはCreateすると立ち上がるところまでやってくれるんですけど、イメージを検索して検索結果のイメージからコンテナを作ると、コンテナは生成されるが立ち上がらず、CLIでやっても上がらない現象が起こりました。
現状、アプリがベータだし、リポジトリのIssueは100個近く解決されてない状態なので、だるくて調べるのをやめましたw

まあでもDockerに買収されて、今後ちったあマシにはなるとは思います。

結論

GUI(゚⊿゚)イラネ