Dockerを思い出しながら、Elasticsearch+Kibanaの環境を作った
最近バックエンドが関わるものをちょくちょく作る機会が出てきているのですが、MAMPやVagrantで一個一個環境をつくっていくのもちょっとしんどいし、Vagrantで作るのもちょっとしんどいなーって思ってきたので、Dockerの勉強をはじめました。
Dockerを触るのは2年ぶりくらいで、その頃はBoot2DockerがあまりよくないとかでCoreOSで立てていたのを覚えています。
また、最近は他にもいろんな良いツールが出ているという話を小耳に挟んでいたのでその辺で作っていこうと思いました。
Docker環境の構築
ちょくちょく名前を聞いていた、Docker for Macを入れてみました。
ダウンロードとインストールはこちらのサイトからいつもアプリを落としてる感じでダウンロードしてインストール作業を進めていくだけです。
バージョンはEdgeとStable(安定版)の2つがあり、最初Edgeを入れてみていたのですが、うまくいかなかったのでStableにしました。その方が今後も安全そうだしね…。
— こにたん (@skd_nw) 2017年9月1日
Next押して固まった…
— こにたん (@skd_nw) 2017年9月1日
インストールが完了すると、メニューバーにDockerのアイコン(クジラの上に四角がいっぱいなやつ)が表示されます。
この状態でdockerコマンドが使えるようになります。
導入の簡単さに驚きを隠せません。また、この状態で既にdocker-composeやkitematicが入ってるそうです。
後者は分からないですが、前者は複数コンテナの扱いが楽になるらしいので勉強しておきたい…。
コマンドを思い出しながら、Elasticsearch + Kibanaの環境を作る
さて、Dockerの実行環境ができたので、ElasticsearchとKibanaの使える環境を作ります。
DockerはDockerfileからDockerイメージを作り、DockerイメージからDockerコンテナを作るというフローみたいなものが存在します。
Dockerfile -> Dockerイメージ -> Dockerコンテナ
Dockerfileでは既存のイメージをもとに更に処理を加えたりミドルウェアを追加したりして拡張することができるようです。
例えば、LinuxのディストリビューションであるDebianを読み込んで、更にnginxを追加するみたいな感じです。
作ったDockerfileは $ docker build
でイメージにすることができます。
色々と処理を追加で書いていくことができますが、面倒なのとその辺りまで作ってあるイメージは大抵Docker Hubというイメージ共有サービスで公開されています。
アカウントを作ると、自分で作ったイメージをアップしておいたり、お気に入りのイメージにStarをつけて応援かつブックマークしておくこともできます。
Docker Hub からイメージを落としてきて使う
検索してみると、ちょうどいいイメージがありました。
nshou/elasticsearch-kibana - Docker Hub
このイメージを落としてくるときは、右上に書いてるDocker pull Commandを参考に、このように打つと pull することができます。
$ docker pull nshou/elasticsearch-kibana
しばらくすると pull が完了するので、あとはこのイメージをもとにコンテナを作ってブラウザで確認できるようにするだけです。
コンテナの作成と起動
以下のコマンドでコンテナの作成と起動ができます。
この辺はドキュメントの通りなので、うまく動かない場合はドキュメントを参照してください。
$ docker run -d -p 9200:9200 -p 5601:5601 nshou/elasticsearch-kibana
Full Description に使い方が書いてあるものが多いので助かります。
起動が終わったらそれぞれ確認します。
ブラウザでそれぞれ以下を叩くとダッシュボードが見れるはずです。
- Elasticsearch
localhost:9200
- Kibana
localhost:5601
コンテナを停止する
立ち上げたままだと気持ち悪いので、用事が終わったら落とします。
以下のコマンドでコンテナの状況を確認できます。
$ docker ps
$ docker ps -a # バックグラウンドで立ち上がってるものまでみるならこれ
実際に停止するときは、上のコマンドで調べた情報から CONTAINER ID
を控えておいて、以下のように叩きます。
$ docker stop CONTAINER ID
もう一度 $ docker ps
コマンドで確認すると、 STATUS のところが Exited になっている のが確認できると思います。
やってみて
Dockerのインストールもだいぶ簡単になったような気がします。
あと、やりたい事をすぐできそうなイメージがいくつもあるようになったのでDocker Hub最高です。
とりあえずこれでELKの環境はさくっと立ち上げられるようになったので、また設定やりつつちょこちょこ触っていけたらなって思います。