まずは起動&接続
インストール&起動確認。
$ docker run -d --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 postgres Unable to find image 'postgres:latest' locally latest: Pulling from library/postgres f2aa67a397c4: Pull complete 8218dd41bf94: Pull complete e9b7fa2e6bd8: Pull complete 7288a45ee17f: Pull complete 0d0f8a67376c: Pull complete 972b115243de: Pull complete d38528c83dd1: Pull complete 9be166d23dee: Pull complete 12015b5ceae7: Pull complete 363876c09ce9: Pull complete b810ba8b2ac0: Pull complete e1ee11d636cf: Pull complete 50d32813cba1: Pull complete 4f0109485c03: Pull complete Digest: sha256:c604b88af0e7adbe45cd2b9c329479c7a5305bd88da37d4806dcc56ab5a31d42 Status: Downloaded newer image for postgres:latest 2699970000ffe6b0a6bb5096a008e7a66033a5b12c9cadee6e3837912b9bc58a
仮想マシンの稼動状態とIPアドレスを確認します。
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2699970000ff postgres "docker-entrypoint.s…" 19 seconds ago Up 17 seconds 0.0.0.0:5432->5432/tcp postgres $ docker-machine.exe ip 192.168.99.100
これでPgAdmin4を利用して接続することが可能です。コンテナの起動状態は
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES def74495f9f0 postgres "docker-entrypoint.s…" 12 minutes ago Exited (0) 8 minutes ago blissful_tereshkova 2699970000ff postgres "docker-entrypoint.s…" 36 minutes ago Up 6 minutes 0.0.0.0:5432->5432/tcp postgres
で確認でき、起動・停止・削除は
$ docker start names or container id $ docker stop names or container id $ docker rm names or container id
で行える。
複数のコンテナをまとめる
プロジェクトを構成するアーキテクチャは複数のコンテナで構成します。そのため、その構成を管理するためのDockerの仕組みを使ってみたいと思います。
$ mkdir ~/vm
$ mkdir ~/vm/test
$ vim ~/vm/test/docker-compose.yml
# docker-compose.ymlを編集する
services:
db:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- "5432:5432"
volumes:
- asp-db:/var/lib/postgresql/data
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
volumes:
asp-db:
$ docker-compose up -d
Creating volume "asp_asp-db" with default driver
Creating asp_db_1 ... done
# 停止するとき
$ docker-compose stop
# 停止後のあれこれ
# 仮想マシンの状態
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2ce77009b60a postgres "docker-entrypoint.s…" 4 minutes ago Exited (137) 54 seconds ago asp_db_1
# DB用に作ったボリューム
$ docker volume ls
DRIVER VOLUME NAME
local asp_asp-db
ローカルディスク上の./docker-entrypoint-initdb.dにsqlを入れておくと最初だけ実行してくれるようです(親切)。
また、本気の開発が始まった場合は、docker-compose up -dのみで開発が可能になるようにします。