Dockerが便利そうだったので試しにMySQLサーバーを構築してみた。

さくらのVPS上に構築してみた。仮想サーバー上にDockerってアリなんでしょか。ま、とりあえず出来たのでメモ。CentOS6.5です。

Dockerインストール

まずDockerをインストールします。外部リポジトリEPELをインストールしなければいけないんですが、さくらのVPSでは既にリポジトリファイルが入ってましたのでパスします。

ls -l /etc/yum.repos.d/
total 28
-rw-r--r--. 1 root root 1926 Dec  1  2013 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Dec  1  2013 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  630 Dec  1  2013 CentOS-Media.repo
-rw-r--r--. 1 root root 4528 Dec  1  2013 CentOS-Vault.repo
-rw-r--r--. 1 root root 1056 Nov  5  2012 epel-testing.repo
-rw-r--r--. 1 root root  957 Nov  5  2012 epel.repo

もし入っていなかった場合は以下の様にしてインストールしてください。

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

EPELが入ったらyumコマンドでDockerをインストールします。

yum install -y docker-io

Dockerのインストールが完了したら起動します。

service docker start

以上で完了です。簡単ですね。

イメージファイルをダウンロード

Dockerのイメージファイルはコンテナーを実行するための情報を持つファイルですが、これをイチから自分でつくるのは大変なので、Docker Hub Registryよりダウンロードして使用します。

docker pull centos:latest

上記コマンドでCentOSのイメージファイルがダウンロードされます。書式は以下の通り。

docker pull IMAGE[:TAG]

TAGにはイメージのバージョンを指定します。イメージを確認するには以下のコマンドで確認できます。

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              0c752394b855        2 weeks ago         124.1 MB

イメージからコンテナの作成・起動

ダウンロードしたイメージからコンテナを作成し、起動するにはdocker runコマンドを使用します。

docker run [OPTION] [--name コンテナ名] IMAGE[:TAG] [COMMAND]

先ほどダウンロードしたcentosイメージを利用したコンテナを作成し、bashを実行するには以下の様にします。

docker run -itd --name centos01 centos /bin/bash

これでコンテナが作成されました。現在起動しているコンテナを確認するにはdocker psコマンドを使用します。

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
9b83baeca008        centos:latest       /bin/bash           About a minute ago   Up About a minute                       centos01  

現在起動しているコンテナに接続するにはdocker attachコマンドを使用します。

docker attach centos01
bash-4.1#   

作成したコンテナのコマンドラインが帰ってきたら成功です。

exitでbashを終了するとコンテナは停止してしまいます。

bash-4.1# exit
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES

終了したコンテナはdocker psコマンドで出力されなくなってしまいますので、-aオプションを付けて確認します。

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
9b83baeca008        centos:latest       /bin/bash           7 minutes ago       Exited (0) 2 minutes ago                       centos01 

STATUSが”Exited”になっています。再度コンテナを起動するにはdocker startコマンドを使用ます。

docker start centos01
docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9b83baeca008        centos:latest       /bin/bash           9 minutes ago       Up 45 seconds    

STATUSが”Up”になりました、これでコンテナは起動している状態です。

MySQLをインストール

再度docker attachコマンドを使ってコンテナに接続します。

docker attach centos01

Docker Hub RegistryのCentOSイメージには必要最低限のものしか入っていなかったので、mysqlインストールに必要な物をインストールします。

yum -y install wget
yum -y install tar
yum -y install perl
yum -y install libaio
yum -y install libaio-devel

次にこちらを参考にMySQL5.6をインストールします。

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.19-1.linux_glibc2.5.x86_64.rpm-bundle.tar
tar xvf MySQL-5.6.19-1.linux_glibc2.5.x86_64.rpm-bundle.tar
rpm -ivh MySQL-shared-compat-5.6.19-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-shared-5.6.19-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.19-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-client-5.6.19-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-server-5.6.19-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.19-1.linux_glibc2.5.x86_64.rpm 

下記コマンドで初期rootパスワード変更

cat ~/.mysql_secret

MySQLデーモン起動

/etc/rc.d/init.d/mysql start

初期設定

/usr/bin/mysql_secure_installation

MySQLコンソールを起動し、接続確認用ユーザーの作成を行います。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

ifconfigでコンテナのIPアドレスを確認しておきます。

以上でコンテナ側の作業は終了です。停止させないでコンテナから抜けるにはCtrl+p -> Ctrl+qを入力します。

以下様にMySQLコンソールが起動できれば成功です。

mysql -h コンテナのIPアドレス -u user -p

コンテナからイメージファイルを作成

環境を構築したコンテナからイメージファイルを作成することも出来ます。コンテナからイメージファイルを作成するにはdocker commitコマンドを使用します。

docker commit centos01 sawarame/centos-mysql

これでMySQLの環境がインストールされたイメージファイルが出来ました。
※ コンテナファイルからイメージファイルを作成するときはMySQLデーモンは停止した状態のほうがいいです。起動したままイメージファイルを作るとデーモンは停止した状態で「/var/lock/subsys/mysql」が残ったままになっていました。

docker run -it --name centos02 sawarame/centos-mysql /bin/bash

とりあえず今日はここまで!VPS上で構築できたのは意外で嬉しいすね。 今後はDocker Hub上にpush&pullとかやってみて色々試してみたい。いやホント簡単・便利(そう)ですね。

コメントを残す