Edited at

Docker pull commit push Dockerfile WordPress環境をつくる~Docker Compose~ 新コマンド編

Docker pull commit push Dockerfile WordPress環境をつくる 新コマンド編では、一つのコンテナーにApache、MySQLをインストールする形式でしたが、Docker Composeを利用すると、ApacheとMySQLのコンテナーをそれぞれ作成し、連携することが簡単に行えます。

中小規模のコンテナーシステムにおいて、WEB、APP、DB等の役割に分けてコンテナーを作成する場合に便利なので、WordPressコンテナーとMySQLコンテナーを分けて、連携するDocker Composeの入門をやってみたいと思います。

Docker pull commit push Dockerfile WordPress環境をつくるの続きですので、環境は以下同じです。

環境:VirtualBoxの仮想マシン上にCentOS7を初期インストールまたはパブリッククラウドでCentOS7のインスタンスを準備


Dockerのインストール


1.Dockerのインストール

必要なパッケージのインストール


コマンド

# yum install -y yum-utils device-mapper-persistent-data lvm2


リポジトリの追加


コマンド

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


最新版のDockerをインストール


コマンド

# yum install -y docker-ce


※今回は、最新版のDockerで行いますが、参考までにバージョン指定のインストールも記します。

<参考>

バージョン指定する場合

バージョンの確認


コマンド

# yum list docker-ce --showduplicates | sort -r

* updates: ftpmirror.your.org
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
Installed Packages
* extras: mirror.san.fastserv.com
* epel: mirror.pnl.gov
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 @docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
* base: mirrors.syringanetworks.net
Available Packages

バージョン指定インストール(例としてdocker-ce-17.06.0.ce-1.el7.centos)


コマンド

# yum install docker-ce-17.06.0.ce-1.el7.centos



2.Dockerの自動起動設定及びサービスの起動


コマンド

# systemctl enable docker.service

# systemctl start docker.service


3.Dockerのバージョンを確認


コマンド

# docker version



4.システム情報の確認


コマンド

# docker info



Docker Composeのインストール


1.Docker Composeのインストール


コマンド

# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose


ダウンロードしたバイナリに対して実行権限を追加します。


コマンド

# chmod +x /usr/local/bin/docker-compose


Docker Composeのバージョンを確認して、インストールができたことを確認してみます。


コマンド

# docker-compose -v

docker-compose version 1.22.0, build f46880fe


docker-compose.ymlファイルの作成


1.docker-compose.ymlファイルの作成


コマンド

# vim docker-compose.yml

ファイル内容は事項参照
:wq


docker-compose.yml

version: '2'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
env_file: .env

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
env_file: .env

volumes:
db_data:
driver: local


docker-compose.ymlの詳細は、こちら!!


2..envファイルの作成

WordPressとMySQLは公式のイメージを使用します。WordPressとMySQLのDB設定は、.envファイルを作成して、読み込むようにします。


コマンド

# vim .env

ファイル内容は事項参照
:wq


.env

MYSQL_ROOT_PASSWORD=somewordpress

MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress


WordpressコンテナーとMySQLコンテナーの起動


1.WordpressコンテナーとMySQLコンテナーの起動

-dオプションを付けてコンテナーをバックグラウンドでの起動する必要があります。


コマンド

# docker-compose up -d


http://VirtualBoxのIPアドレス:8080/」にアクセスし、WordPressの管理画面が表示されることを確認します。


2.Volunesの確認

docker-compose.ymlの最終行でdriver:localとすると、ホストLinuxの/var/lib/docker/volumes/以下に「docker volume」コマンドで確認した「volumes名」でディレクトリが作られます。

MySQLのコンテナー内:「/var/lib/mysql」

ホストLinux:「/var/lib/docker/volumes/build_wordpress_db_data/_data」

1.volume名の確認


コマンド

# docker volume ls

DRIVER VOLUME NAME
local 4a6d8907ab34c9796f837ed39bc8837403a026df79dd72865b2cd7d228b05a86
local build_wordpress_db_data

2.Linuxホストの以下ディレクトリでtestという空ファイルを作成


コマンド

# touch /var/lib/docker/volumes/build_wordpress_db_data/_data/test

# ls /var/lib/docker/volumes/build_wordpress_db_data/_data/
auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql private_key.pem server-cert.pem sys wordpress
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 performance_schema public_key.pem server-key.pem test

3.MySQLのコンテナID確認


コマンド

# docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
574093a3ab15 wordpress:latest "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 0.0.0.0:8080->80/tcp build_wordpress_wordpress_1
f8d4df440dd7 mysql:5.7 "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 3306/tcp, 33060/tcp build_wordpress_db_1

4.MySQLコンテナーの中からも確認


コマンド

# docker container exec -it f8d4df440dd7 /bin/bash

root@f8d4df440dd7:/# ls /var/lib/mysql
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem test
ca-key.pem client-key.pem ib_logfile1 mysql public_key.pem sys wordpress
ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem

5.コンテナーでもtest2という空ファイルを作成して、Linuxホストから確認


コマンド

root@f8d4df440dd7:/# touch /var/lib/mysql/test2

root@f8d4df440dd7:/# ls /var/lib/mysql
auto.cnf client-cert.pem ib_logfile0 ibtmp1 private_key.pem server-key.pem test2
ca-key.pem client-key.pem ib_logfile1 mysql public_key.pem sys wordpress
ca.pem ib_buffer_pool ibdata1 performance_schema server-cert.pem test
root@f8d4df440dd7:/# exit

6.Linuxホストで確認


コマンド

# ls /var/lib/docker/volumes/build_wordpress_db_data/_data/

auto.cnf ca.pem client-key.pem ib_logfile0 ibdata1 mysql private_key.pem server-cert.pem sys test2
ca-key.pem client-cert.pem ib_buffer_pool ib_logfile1 ibtmp1 performance_schema public_key.pem server-key.pem test wordpress

※volumeのディレクトリは、docker-compose down -v, docker-compose rm -vなど-vオプションを指定することによって削除できます。


3.主なdocker-composeコマンド

主なdocker-composeコマンドは以下となります。

コマンド
説明

up
コンテナーの生成/起動

down
全てのコンテナーの停止と同時削除

scale
生成するコンテナー数の指定

ps
コンテナーの一覧表示

logs
コンテナーログの出力

run
コンテナーの実行

start
コンテナーの起動

stop
コンテナーの停止

restart
コンテナーの再起動

kill
実行中コンテナーの強制停止

rm
コンテナーの削除

docker-composeコマンドの詳細は、こちら!!

参考サイト