#author("2018-08-31T09:00:08+09:00","","")
#freeze
#author("2018-08-31T09:04:07+09:00","","")
[[CentOS7]]

*Docker : Docker Compose を利用する [#ydc7ddc7]

Docker Compose をインストールすると、複数コンテナーの定義や実行が容易に可能となります。

Docker Compose をインストールします。
**Docker Compose をインストールします。 [#pf83315f]
|BGCOLOR(black):COLOR(white):|c
|&color(lightpink){# EPELからインストール};|
|[root@localhost ~]# yum --enablerepo=epel -y install python2-pip|
|[root@localhost ~]# pip install docker-compose|



例として、Apache httpd が稼働するコンテナーと MariaDB が稼働するコンテナーを同時に起動する場合の設定です。
|BGCOLOR(black):COLOR(white):|c
|&color(lightpink){# httpd が起動するコンテナーを定義};|
|[root@localhost ~]# vi Dockerfile|
|FROM centos &br; MAINTAINER ServerWorld <admin@hoge.com> &br;  &br; RUN yum -y update &br; RUN yum -y install httpd &br;  &br; EXPOSE 80 &br; CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"] &br;  &br; |
|&color(lightpink){# アプリケーションの構成を定義};|
|[root@localhost ~]# vi docker-compose.yml|
|version: '3' &br; services: &br;   db: &br;     image: mariadb &br;     volumes: &br;       - /var/lib/docker/disk01:/var/lib/mysql &br;     environment: &br;       MYSQL_ROOT_PASSWORD: password &br;       MYSQL_USER: centos &br;       MYSQL_PASSWORD: password &br;       MYSQL_DATABASE: centos_db &br;     ports: &br;       - "3306:3306" &br;   web: &br;     build: . &br;     ports: &br;       - "80:80" &br;     volumes: &br;       - /var/lib/docker/disk02:/var/www/html &br;  &br; |
|&color(lightpink){# SELinux 有効の場合は Enforcing 以外に設定};|
|[root@localhost ~]# setenforce 0|
|&color(lightpink){# アプリケーションをビルド/実行};|
|[root@localhost ~]# docker-compose up -d|
|Building web &br; Step 1/6 : FROM centos &br; Trying to pull repository docker.io/library/centos ... &br; latest: Pulling from docker.io/library/centos &br; 256b176beaff: Download complete &br; ..... &br; ..... &br; Creating root_web_1 ... &br; Creating root_db_1  ... &br; Creating root_web_1 ... done &br; Creating root_db_1  ... done|
|[root@localhost ~]# docker ps|
|CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS         PORTS                    NAMES &br; 06ece319c627   mariadb      "docker-entrypoint..."   20 seconds ago   Up 18 seconds  0.0.0.0:3306->3306/tcp   root_db_1 &br; 1f3796c137f3   root_web     "/usr/sbin/apachec..."   20 seconds ago   Up 18 seconds  0.0.0.0:80->80/tcp       root_web_1|
|&color(lightpink){# アクセス確認};|
|[root@localhost ~]# mysql -h 127.0.0.1 -u root -p -e "show variables like 'hostname';"|
|Enter password: &br; +---------------+--------------+ &br; &#124; Variable_name &#124; Value        &#124; &br; +---------------+--------------+ &br; &#124; hostname      &#124; 06ece319c627 &#124; &br; +---------------+--------------+|
|[root@localhost ~]# mysql -h 127.0.0.1 -u centos -p -e "show databases;"|
|Enter password: &br; +--------------------+ &br; &#124; Database           &#124; &br; +--------------------+ &br; &#124; centos_db          &#124; &br; &#124; information_schema &#124; &br; +--------------------+|
|[root@localhost ~]# echo "Hello Docker Compose World" > /var/lib/docker/disk02/index.html|
|[root@localhost ~]# curl localhost|
|Hello Docker Compose World|



Docker Compose その他の基本的な操作です。
**Docker Compose その他の基本的な操作です。 [#c14edc04]
|BGCOLOR(black):COLOR(white):|c
|&color(lightpink){# アプリケーションを構成するコンテナーの状態確認};|
|[root@localhost ~]# docker-compose ps|
|   Name                 Command               State           Ports &br; 
---------------------------------------------------------------------------- &br; 
root_db_1    docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp &br; 
root_web_1   /usr/sbin/apachectl -D FOR ...   Up      0.0.0.0:80->80/tcp &br; |
|   Name                 Command               State           Ports &br; ---------------------------------------------------------------------------- &br; root_db_1    docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp &br; root_web_1   /usr/sbin/apachectl -D FOR ...   Up      0.0.0.0:80->80/tcp &br; |
|&color(lightpink){# アプリケーションを構成するコンテナーのログ確認};|
|[root@localhost ~]# docker-compose logs|
|Attaching to root_db_1, root_web_1 &br; web_1  &#124; Passing arguments to httpd using apachectl is no longer supported. &br; web_1  &#124; You can only start/stop/restart httpd using this script. &br; ..... &br; ..... &br; db_1   &#124; 2018-08-28  2:35:54 0 [Note] Added new Master_info '' to hash table &br; db_1   &#124; 2018-08-28  2:35:54 0 [Note] mysqld: ready for connections. &br; db_1   &#124; Version: '10.3.9-MariaDB-1:10.3.9+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution &br; |
|&color(lightpink){# アプリケーションを構成するコンテナーでコマンド実行};|
|&color(lightpink){# コンテナー名は [docker-compose.yml] で指定した名称};|
|[root@localhost ~]# docker-compose exec db /bin/bash|
|root@06ece319c627:/# &br; |
|&color(lightpink){# アプリケーションを終了し、構成するコンテナーを全て停止};|
|[root@localhost ~]# docker-compose stop|
|Stopping root_web_1 ... done &br; Stopping root_db_1  ... done &br; |
|&color(lightpink){# アプリケーションに定義したサービスを個別に起動};|
|&color(lightpink){# 依存関係を設定している場合は依存コンテナーも同時に起動};|
|[root@localhost ~]# docker-compose up -d web|
|Stopping root_db_1  ... &br; Stopping root_web_1 ... &br; Stopping root_db_1  ... done &br; Stopping root_web_1 ... done|
|[root@localhost ~]# docker-compose ps|
|   Name                 Command                State     Ports &br; 
-------------------------------------------------------------- &br; 
root_db_1    docker-entrypoint.sh mysqld      Exit 0 &br; 
root_web_1   /usr/sbin/apachectl -D FOR ...   Exit 137 &br; |
|   Name                 Command                State     Ports &br; -------------------------------------------------------------- &br; root_db_1    docker-entrypoint.sh mysqld      Exit 0 &br; root_web_1   /usr/sbin/apachectl -D FOR ...   Exit 137 &br; |
|&color(lightpink){# アプリケーションに関連するコンテナーを全て削除 &br; # 起動中のコンテナーは削除しない}; &br; |
|[root@localhost ~]# docker-compose rm|
|Going to remove root_db_1, root_web_1 &br; Are you sure? [yN] y &br; Removing root_db_1 ... done &br; Removing root_web_1 ... done|



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS