LoginSignup
42
43

More than 5 years have passed since last update.

MySQL, PostgreSQL ちょっとお試し用 Docker コンテナの起動と廃棄

Last updated at Posted at 2014-11-18

ちょっと試したいクエリがある時に、サーバをちょっと起動してすぐ消せる。なんて便利。

MySQL

公式イメージを使うのが容易(docker-library/mysql)。

Docker 公式ドキュメントは「docker-library/docs」にあり、MySQL は右記。 ∥ docs/mysql at master · docker-library/docs

現状でバージョンは 5.5, 5.6, 5.7 とある。

$ docker run --name mysql0 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
$ mysql --host=$(docker inspect --format "{{ .NetworkSettings.IPAddress }}" mysql0) -u root -p
mysql
mysql> CREATE DATABASE foo;
mysql> USE foo;
mysql> CREATE TABLE bar (k integer, v text);
mysql> INSERT INTO bar VALUES(10, 'Ten');
mysql> INSERT INTO bar VALUES(20, 'Twenty');
mysql> SELECT count(*) FROM bar;
mysql> EXIT;
$ docker rm -f mysql0

Docker 1.3 以上であれば exec サブコマンドが使えるので、コンテナが持っているクライアントを用いることも可能(ローカルに MySQL クライアントが入っていなくても OK)。対話をするので、オプションで「--interactive」と「--tty」を指定のこと。

$ docker exec -it mysql0 mysql -u root -p

同様に、PostgreSQL

公式のレポジトリは右記。 ∥ docker-library/postgres

追記(Jan 13 2015): 先ほど postgres/9.4 at master · docker-library/postgres を見ると、$POSTGRES_PASSWORD が設定できるようになっているようですね。

リファレンスは右記。 ∥ docs/postgres at master · docker-library/docs

現状でのバージョンは、8.4, 9.0, 9.1, 9.2, 9.3 と、ベータの 9.4 がある。

$ docker run --name postgres0 -d postgres:9.3 
$ psql -h $(docker inspect --format "{{ .NetworkSettings.IPAddress }}" postgres0) -U postgres
postgres=# SELECT current_database(), current_schema();
 current_database | current_schema
------------------+----------------
 postgres         | public
(1 row)
postgres=# \q
$ docker rm -f postgres0

同様に、Docker 1.3 以上であれば、下記でも可。

$ docker exec -it postgres0 psql -U postgres

$PGDATA は /var/lib/postgresql/data/ で、VOLUME 指定されています。

あれ、パスワードを聞いてきませんね。おっと、pg_hba.conf は見ての通りスッカスカなので、このまま実運用はしてはいけません。Dockerfile を書きましょう。

/var/lib/postgresql/data/pg_hba.conf
...
host all all 0.0.0.0/0 trust
...
42
43
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
43