LoginSignup
2
1

More than 5 years have passed since last update.

CentOSからMySQLが接続出来る環境をDocker Composeを利用して作成する

Posted at

目的

  • 既存の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を作成してログインする

signin.png

作業前

作業用ディレクトリを作成して移動(※必須ではない)

$ mkdir dockerpractice
$ cd dockerpractice

Dockerfileの作成

docker-compose用のディレクトリを作成する

$ mkdir centos
$ mkdir mysql

CentOS

Docker Hub:centosから対象のタグ(centos6, 6 (docker/Dockerfile))を確認しつつDockerfileに設定する

$ vi centos/Dockerfile
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
mysql/Dockerfile
FROM mysql:5.6.40

docker-composeを利用した複数コンテナの管理

設定ファイル作成

docker-compose.ymlを作成して

$ vi docker-compose.yml

イメージの構成を記載する

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の操作方法が理解できました。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1