TKC Works

ギジュツ的なメモ、読書感想文など

dockerでzabbixを動かす

公式のイメージ一覧 を見ると、どれ使ったらええねん!って思いました。 結論は全部で4イメージ必要でした。サンプルのgistを貼っておきます。

※というかmonitoringartistのほうを使う人の方が多そう。

dockerでzabbixを動かす

例えばzabbix-web-nginx-mysqlってイメージ名だとこれ一つで全部動くのかと思ってしまいますが実際はnginxとphpだけです。 当然、zabbix-server-mysqlにはmysqlが入っていません。あと初期設定に自分自身のメトリクスをとる設定が入っていますが、zabbix-agentも別なので別途入れる必要があります。

プライベートDocker Registryの移行作業

古いプライベートDocker Registryサーバーを移行した。新サーバーには最新のイメージを使った。

Docker RegistryのバージョンV1系とV2系ではデータ構造に互換性がなく、イメージを1個ずつ旧サーバーからPull&新サーバーへPushしなくていはいけないらしい。 さすがにいちいちやってられないと思ったけど、移行ツールを見つけたので使うことにした。

だが、旧サーバーがV1ですらないのか、search APIリポジトリ取得できなかったので移行ツールを改造して使った。 github.com

得られた知見

  • 旧registryのバージョンを確認しようとしたがlatestタグなのでわからなかった。latestタグはあまり使わないほうがよい。
  • 移行に結構時間がかかった。ほとんどのイメージのベースがubuntuだった。alpineとか使ってイメージのサイズを小さくなるようにしたほうがよい。

ISUCON6予選感想

友人のnise_nabeとtatsukiと出て惨敗してきました。

自分たちがどんな感じだったかざっくり書いていくと

  • 1週間前に集まってMTG&過去問を解いて練習
  • 練習はPHP
    • みんなスキルセットがバラける中、全員がちょっとでもやったことがあったのがPHP
  • 練習でもなかなか良いスコア出せず
  • 去年の決勝進出チームはgoが多かったらしいということで本番はgoでいくことに
    • これが今回の伏線になるとは。。。
  • goやっているのはnise_nabeだけなのでgoはnise_nabeが。残り二人でSQL他をチューニングする体制で。
  • 本番は例のhtmlfyに殺られる

htmlfyどうしたら良かったのかは出題者や本線出場チームが書いてくれるでしょう。 何も出来なかった自分は特に書くことがないですが、あるとすれば、

チームで集まって作業できる場所の確保に失敗したら自遊空間が使える

です。

今回LINE社が用意してくれたスペースの申請を忘れてしまい、チームで作業する場所がありませんでした。。

他の選択肢としては

  • リモート
  • 誰かの家
  • 誰かのオフィス
  • 貸会議室

このようになると思いますが、自分たちは自遊空間高田馬場店のファミリールームで参戦しました。 まあまあ使えたので来年場所が確保できなかった人たち用に共有したいと思います。

  • 料金は10:00~18:00でも3,000円くらいでした。
  • 当然ドリンクは飲み放題で、フードメニューが結構リーズナブルだったので昼食代は300円くらいでした。
  • Wi-Fiはなかったのでテザリングで対応しました。
  • 通常席とは隔離されていたのでしゃべっても問題なかったです。

↑全然スコア出なかったという意味でもあり、ファミリールームが座敷タイプだったという意味でもある。

Dockerで溜まったゴミを削除する

コンテナを起動しようとするとno space left on deviceというエラーで立ち上がらなくなった。 ホストのMacのストレージは100GB以上空きがあったから、Docker for Macが内部的に確保した領域なのかな?

Dockerでno Space Left on Deviceが出てbuildできなくなった - Shoyan blog

ここを参考にコンテナとイメージを削除したけど、自分の場合はまだダメで、volumeも削除したら直った。

今後も発生しそうなのでまとめて消すコードを書いておいた。

Dockerで溜まったゴミを削除する

Dockerで作るシンプルなRails開発環境

ずっとローカル開発環境はVagrantを使っていましたが、Docker for Macがリリースされてからは徐々にDockerにしています。

コードはIDE等を使って書いたほうがいいと思っているのでVagrantのsynced_foldersを好んで使っていました。

Dockerの入門記事ではよくVagrantでVirturalBox上のUbuntuにDockerを入れて…とかやっているのが多くてなんか冗長というか、違和感がありました。

Docker for Macでは直接Dockerが使えるのでコンテナを--volumeオプションで起動するとsynced_foldersのようなことは出来るし、ホストとコンテナの間に余計なものがないのでだいぶスッキリしました。

設定ファイルは以下のようになりました。ほとんど公式のクイックスタートのままですが。 Quickstart: Compose and Rails

環境は以下の通りです。

  • Mac OS X 10.11.6
  • Docker 1.12
  • docker-compose 1.8.0

Dockerで作るシンプルなRails開発環境

Dockerfileとdocker-compose.ymlをRailsプロジェクトディレクトリ直下に置いて、 config/database.ymlのhost:mysqlに書き換えて、以下のコマンドでOK。 docker-composeで立ち上げるとdepends_onとかlinksで指定した名前で接続できるので便利。

docker-compose build
docker-compose up

Gemfileを書き換えた時はbuildからやり直しでちょっと時間がかかるけど、それ以外は不満はない。 あとコンテナサイズが大きくなりそうなんでDBのデータも外出ししておいた。