[Docker] docker-compose で複数コンテナを紐付けて操作する
こちらのコマンドを使う方が多そうだ。
他に公式ドキュメントがある。
% docker version
Client:
Version: 1.12.0-rc2
API version: 1.24
Go version: go1.6.2
Git commit: 906eacd
Built: Fri Jun 17 20:35:33 2016
OS/Arch: darwin/amd64
Experimental: true
Server:
Version: 1.12.0-rc2
API version: 1.24
Go version: go1.6.2
Git commit: a7119de
Built: Wed Jun 29 10:03:33 2016
OS/Arch: linux/amd64
Experimental: true
Contents
まとめ
- Dockerfile をコンテナ毎に用意する(Dockerfile でまかなう)。
- docker-compose.yml で複数コンテナの紐付けを行う。
docker-compose build
,docker-compose up
で利用する。
docker コマンドを利用してコンテナを操作する
コンテナ毎に Docoker ファイルを用意し、Docker コマンドで操作する。
複数コンテナを利用するユースケースが一般的と想像できるので、後述の docker-compose コマンドで操作することになるだろう。
Dockerfile を利用してオリジナルのイメージを作成する
-t
でイメージに命名する。
% docker build -t deadwood/database ./deadwood-database
環境変数を渡してコンテナを動かす
これらの環境変数は Dockerfile に持たせることになる。
--name
でコンテナに名前を付ける。
-d
でバックグラウンドで実行する。
-e
で環境変数を渡す。
-p
でコンテナ内部と外部のポートを割り当てる。
% docker run --name db -d -e MYSQL_ROOT_PASSWORD=123 -p 3306:3306 mysql:latest
コンテナの依存関係は docker-compose.yml に持たせることになる。
--link
で db と名付けられたコンテナにリンクし、これを db として参照する。
% docker run -it -p 8123:8123 --link db:db -e DATABASE_HOST=DB users-service
実行中のコンテナにログインする
% docker exec -it db /bin/bash
以下ではコマンドの実行を受け取る。
% docker exec db cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 17c9aa64df99
docker-compose コマンドを利用して複数コンテナを操作する
コンテナ毎に Dockerfile を用意しておき、docker-compose.yml で紐付ける。
version: '2'
services:
httpd:
build: ./deadwood-httpd
ports:
- "8080:80"
depends_on:
- db
environment:
- DATABASE_HOST=db
db:
build: ./deadwood-database
build
でイメージを作成する。
% docker-compose build
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sandboxdocker_httpd latest 228c75119fc2 12 seconds ago 316.7 MB
sandboxdocker_db latest 1d707530cce3 34 seconds ago 380.2 MB
mysql 5 1195b21c3a45 3 weeks ago 380.2 MB
mysql latest 1195b21c3a45 3 weeks ago 380.2 MB
centos latest 904d6c400333 4 weeks ago 196.8 MB
nginx latest 0d409d33b27e 4 weeks ago 182.8 MB
up
でコンテナを実行する。
% docker-compose up
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fa09e73f8f4f sandboxdocker_httpd "/usr/sbin/httpd -D F" 20 seconds ago Up 18 seconds 0.0.0.0:8080->80/tcp sandboxdocker_httpd_1
d9cf291bc967 sandboxdocker_db "docker-entrypoint.sh" 21 seconds ago Up 20 seconds 3306/tcp sandboxdocker_db_1
down
で実行を終える。
% docker-compose down
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
未来ですね。
WEB+DB PRESS Vol.86
posted with amazlet at 16.06.29
結城 洋志 沖元 謙治 足永 拓郎 林 健太郎 大竹 智也 内田 誠悟 伊藤 直也 中山 裕司 hiroki.o 泉水 翔吾 佐藤 太一 高橋 俊幸 西尾 泰和 舘野 祐一 中島 聡 橋本 翔 はまちや2 竹原 麻植 泰輔
技術評論社
売り上げランキング: 237,581
技術評論社
売り上げランキング: 237,581