きょこみのーと

元六本木でGo書いてました。今はVRでGo書いてます。

ConoHa × dockerやってみた

3/22(土)に友人とdockerで遊ぼうということで、 13時くらいスタートでdocker使って何かやろうとしたときのまとめです。

雑談してたら14時半くらいになってたので実質作業時間は、5時間くらいです。

環境

  • ConoHa(centos6.4)

ConoHaのVPS

ConoHaかわいいよ!

ABC2014Springで、クーポンとかもらったので使わせていただきます。

参考

ゴール

  • ConoHaの薄い本の通りドカドカやる
  • Cococs2d-xのAndroidビルド環境をつくる(iOSビルドは、しらん)

dockerとはなんぞや

こちら参考で一部引用。

ようするにこういうこと↓

適当な条件の VM をポコポコ生み出してはテストや実際の運用に使うことができたりするもの

具体的に使う例として

  • PaaSみたいな感じ。つくったイメージでVMつくってデプロイしてすぐアプリが動くとか
  • Travis CIみたいな感じ。各言語ごとの実行環境が整ったVMみたいなものに任意のコードを渡してビルドさせるとか

一応理解したので、実際にやってみた

とりあえずイメージつくる

docker起動してcentosベースでtelnetいれたイメージをつくる

インストールは省略。rpm追加してyum install dockerみたいな感じ。 3行でいける。

# docker起動
$ service docker start

# centos入れる
$ docker pull centos

# centosイメージでbash起動してtelnetインストール
$ docker run -i -t centos /bin/bash
bash-4.1# yum -y install telnet

# commitしてイメージをつくる
$ docker commit `dl` conoha/telnet

こんだけで完成。

Dockerfileつくる

Dockerfileを使ってwebサーバーを起動する。

centosベースでtelnethttpdをinstallしてhttpdコマンドで起動する感じ。

Dockerfileの中身

FROM centos
RUN yum -y install telnet
RUN yum -y install httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

すげー俺でも読めるわー。

Dockerfileを実行

# Dockerfileでイメージコンテナをつくる
$ docker build -t conoha/hogeapache ~/docker/hoge

# ConoHaの80ポートとconoha/hogeapacheの80ポートをつなぐ感じで起動する
$ docker run -p 80:80 -d conoha/hogeapache

なるほどねー

ConoHaタソにアクセスしてみる

イェア!!!!!!!!Apache testページキタ━(゚∀゚)━!

Docker公式で一杯イメージあるよ!

検索も便利そう。

https://index.docker.io/

よく使うコマンド

今手元にあるイメージを確認する

$ docker images

イメージを指定してbashを起動

$ docker run -i -t [IMAGE] /bin/bash

起動してるdockerプロセスの確認

$ docker ps

Tips

dockerコマンドをaliasに追加しておかないとダルい

$ echo "alias dl='docker ps -l -q'" >> ~/.bashrc

そうするとイメージ保存が、こんな感じになる。

$ docker commit `dl` [IMAGE]

cocos2d-x android & docker

誰かのdockerfileにまかせる

以下の、いい感じのandroid環境のdockerfileがあったので入れてみた。

https://index.docker.io/u/ahazem/android/

$ docker pull  ahazem/android

起動してもなんかエラー

latestのimageがないとかなんとか

$ docker run -t -i ahazem/android /bin/bash
Unable to find image 'ahazem/android' locally
2014/03/22 17:58:08 Error: create: No such image: ahazem/android (tag: latest)

ちゃんとpullしたつもりなので、docker imagesで確認する。

$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ahazem/android         v0.7.6              728a984d2d61        7 weeks ago         5.397 GB

tagがちがうので作る

TAGなんかversionになっとる。自分でつくるしかない。

$ docker tag ahazem/android:v0.7.6 ahazem/android:latest

というか、作ったあとに気がついた。タグ指定したらlatestなくてもいいのか。

$ docker run -t -i ahazem/android:v0.7.6 /bin/bash

tag指定なしのrunは、デフォルトでlatestタグで起動するみたいだよ!

が言いたかった。

まとめ

cocos2d-xどうなった?

  • 5時間くらいじゃ、時間たりねー。( ‘д‘⊂彡☆))Д´) パーン

ConoHaどうなの

  • 使い勝手は、結構いい感じ。イメージキャラクターは大事。

Dockerどうなの

  • 学習コストはかなり低い感じがした。そもそもインフラ周りに理解がある人ならサクッといけると思う
  • dockerとかyumのinstallとか早い。VPS上だから?

おわり