目的
- 既存のDockerコンテナ間で接続不良が発生しているように思える事に対する、比較検証用Dockerイメージを作成
- 筆者が今まで数時間しかDocker使ったことがないため、学習目的を兼ねてます
Dockerとは
コンテナ型の仮想環境
VirtualBoxなどの仮想環境と比べ、ゲストOSや仮想ハードウェアを利用していないため、軽量で起動が早く利用できる
Docker Composeとは
複数のDockerコンテナを同時に管理出来る機能
前提
Mac OS High Sierra 10.13.5
MacのMySQL Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)
Dockerのインストール
Docker Community Editionをインストールする
$ brew cask info docker
docker: 18.03.1-ce-mac65,24312
https://www.docker.com/community-edition
$ brew cask install docker
Dockerを起動し、マシンのパスワードを入力した後、インストール確認を行う
$ docker version
~
Version: 18.03.1-ce
~
Docker IDの作成及びログイン
Sign in Create Docker IDからDocker IDを作成してログインする
作業前
作業用ディレクトリを作成して移動(※必須ではない)
$ mkdir dockerpractice
$ cd dockerpractice
Dockerfileの作成
docker-compose用のディレクトリを作成する
$ mkdir centos
$ mkdir mysql
CentOS
Docker Hub:centosから対象のタグ(centos6, 6 (docker/Dockerfile))を確認しつつDockerfileに設定する
$ vi centos/Dockerfile
FROM centos:6
RUN yum -y update && yum -y install mysql && yum clean all
MySQL
Docker Hub:mysqlから対象のタグ(5.6.40, 5.6 (5.6/Dockerfile))を確認しつつDockerfileに設定する
$ vi mysql/Dockerfile
FROM mysql:5.6.40
docker-composeを利用した複数コンテナの管理
設定ファイル作成
docker-compose.ymlを作成して
$ vi docker-compose.yml
イメージの構成を記載する
version: '3'
services:
mysql:
build: ./mysql
image: mysql:5.6.40
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: mysql
centos6:
build: ./centos
image: centos:6
Docker image立ち上げ
docker-composeを利用してイメージを立ち上げる
$ docker-compose up -d --build
起動確認
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------
dockerpractice_centos6_1 /bin/bash Up
dockerpractice_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
接続確認
MySQLから
$ docker exec -it dockerpractice_mysql_1 bin/bash
# mysql -uroot -p
Enter password: パスワード
~
mysql>
ローカルからMySQL
$ mysql --port=3306 --host=127.0.0.1 -uroot -p
Enter password: パスワード
~
mysql>
CentOSからMySQL
docker-compose.ymlで定義したbuildに対して接続を実施する
$ docker exec -it dockerpractice_centos6_1 /bin/bash
$ mysql --port=3306 --host=mysql -uroot -p
結果
CentOSからMySQLに接続する際、127.0.0.1ではなく、docker-compose.ymlに定義したbuildをhostに設定しないとならないのが分かりましたのと、Dockerの操作方法が理解できました。