背景
- みんなだいすきElasticsearchがいつのまにか2.0になってた
- これを叩いていろいろためしたい
- だけど生ローカルで動いているElasticsearchがあり、これはカジュアルにAPI変えたくない
- Dockerイメージあるし、docker-machineでホストごと分離するのがよさそう
ログ
% docker-machine create es2.0 --driver virtualbox % docker-machine env es2.0 % eval $(docker-machine env es2.0) % docker-machine ssh es2.0
# 以下、machine内での作業 docker@es2:~$ docker@es2:~$ docker run -d elasticsearch 23109478735ac87439c07df34a47bca40e3f4c14d688791a552489b8921778ee docker@es2:~$ curl "http://localhost:9200" curl: (7) Failed connect to localhost:9200; Connection refused
あらん?
Connection refused
docker@es2:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23109478735a elasticsearch "/docker-entrypoint.s" About a minute ago Up About a minute 9200/tcp, 9300/tcp modest_archimedes
PORTは空いてる気がするけれど、EXPOSEかな?
# さっきのはいったん殺す docker@es2:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 23109478735a elasticsearch "/docker-entrypoint.s" About a minute ago Up About a minute 9200/tcp, 9300/tcp modest_archimedes docker@es2:~$ docker kill 23109478735a 23109478735a docker@es2:~$ docker rm 23109478735a 23109478735a docker@es2:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES docker@es2:~$
PORTをホストマシンのPORTにバインドしてrunする
docker@es2:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES docker@es2:~$ docker run -d -p 9200:9200 elasticsearch 2b03d2ded545008de52b6c18c3a79e9dc475b9b895a101564eb65723b67e4838 docker@es2:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b03d2ded545 elasticsearch "/docker-entrypoint.s" 7 seconds ago Up 7 seconds 0.0.0.0:9200->9200/tcp, 9300/tcp tender_fermat docker@es2:~$ curl "http://localhost:9200?pretty" { "name" : "Spider-Girl", "cluster_name" : "elasticsearch", "version" : { "number" : "2.0.0", "build_hash" : "de54438d6af8f9340d50c5c786151783ce7d6be5", "build_timestamp" : "2015-10-22T08:09:48Z", "build_snapshot" : false, "lucene_version" : "5.2.1" }, "tagline" : "You Know, for Search" } docker@es2:~$
無事、docker-machineでホストVMのうえでElasticsearch2.0のdockerコンテナが動いててAPIも叩けるようになった。
念の為、Macの生ローカルのElasticsearchの1.5を同時に起動してみる。
22:07:13 (๑˃̵ᴗ˂̵)و ./elasticsearch-1.5.1/bin/elasticsearch 21:56:08 (๑˃̵ᴗ˂̵)و curl ":9200" { "status" : 200, "name" : "Frank Simpson", "cluster_name" : "elasticsearch", "version" : { "number" : "1.5.1", "build_hash" : "5e38401bc4e4388537a615569ac60925788e1cf4", "build_timestamp" : "2015-04-09T13:41:35Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "
これで、生ローカルのElasticsearchと分離して、docker-machine ssh es2.0
でいつでもElasticsearch2.0のAPIを叩いて試せる環境が整ったでござるな。
DRYな備忘録