dockerでローカル環境にデータベースを立ち上げる

ずいぶん前に触ってからイマイチ使いどころが分からなかったdockerですが、
ECS (EC2 Container Service)も出たことなので思い出しついでのメモ。

boot2docker

ローカル環境はboot2docker一択でしょうか。Windows版もあるみたいです。
Mac版で試します。brew installで簡単に。

$ brew install boot2docker
$ boot2docker init
$ boot2docker up

boot2docker init実行時に出力された値を環境変数に設定する必要があるので、
~/.bash_profileにでも貼り付けておきます。

$ vi ~/.bash_profile
(〜省略〜)
export DOCKER_HOST=tcp://192.168.xxx.xxx:2376
export DOCKER_CERT_PATH=/Users/yustam/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
$ source ~/.bash_profile

PostgreSQL

DockerHubよりPostgreSQLのイメージを起動。

$ docker run -it -e POSTGRES_PASSWORD=hogehoge -p 5432:5432 postgres

接続先はboot2docker ipで取得した値のようです。

$ boot2docker ip
192.168.xxx.xxx
$ psql -h 192.168.xxx.xxx -U postgres
Password for user postgres: hogehoge
psql (9.4.1)
Type "help" for help.

postgres=# 

MongoDB

こちらも同じように書けます。DockerHubからMongoDBを起動。

$ docker run -it -p 27017:27017 mongo
$ mongo 192.168.xxx.xxx
MongoDB shell version: 3.0.2
connecting to: 192.168.xxx.xxx/test
> show dbs;
local  0.078GB
> 

その他調べたこと

  • この起動方法だと停止するとデータも消える(使い捨てテスト用?)
  • docker runのオプション
省略形 オプション 意味
-e --env コンテナの環境変数に値をセットする
-p --publish コンテナの外から接続するためにポートを公開する
-i --interactive 標準入力の有効化。Ctrl+Cで停止できるようになる
-t --tty 擬似コンソール?。-iと組み合わせて対話的に動作する
-d --detach コンテナをバックグラウンドで動作させる