まずは起動&接続
インストール&起動確認。
$ 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のみで開発が可能になるようにします。