■Dockerを使う目的
テスト用のVMを毎回作成するのが手間だったため、Dockerで1個のVMの中に複数のサーバを立てよう!ということになりました。
(Vagrantを使用すればVM作成はそれほど手間でもない気がしますが、複数のVMが乱立しカオスになりそうなためこれは却下で)
■事前準備
今回はVirtualBoxにCentOS 7環境を用意し、そこにDockerをインストールします。
CentOSへのDockerのインストールは、公式サイトに記載されています。
「Install」の章を実行し、docker version
コマンドでバージョンを確認したところ「1.9.1」がインストールされていました。
■DockerでDBサーバを動かしてみる
Dockerがどんなものかまだピンときていないので、DBサーバ(MySQL5.7)を動かして掴んでみたいと思います。流れとしては、
- コンテナ実行用のイメージを用意(Docker Hubからダウンロードできる、Dockerfileで自作することもできる)
- イメージからコンテナを作成
- コンテナを実行
たったのこれだけのようです。
今回はDocker Hubからダウンロードしてみます。
1. コンテナの実行用イメージをダウンロード
Docker Hubで「mysql」で検索したところ、公式のイメージがありました。以下のコマンドでダウンロードします。
$ docker pull mysql
ダウンロードが完了したら、念のため以下のコマンドでダウンロードされているか確認しておきます。
$ docker images
2. イメージからコンテナを作成 & 実行
docker run
コマンドで、コンテナの作成と実行が同時に行われるようです。
こちらにコマンドが記載されているので、とりあえず叩いてみます。
$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=test_pass123 -d mysql:latest
バックグラウンドで実行されているようなので、以下のコマンドで実行されているか確認してみます。
$ docker ps
3. 実行中のコンテナ内でコマンドを叩く
MySQLは動いているようですが、実際にコマンドを叩いてMySQLの動作を確認したい場合、以下のコマンドでコンテナ内でコマンドが叩けるようになります。
$ docker exec -it mysql bash
「mysql」の部分はコンテナID(docker ps
コマンドで確認できる)でもいけます。
抜けるときはexit
で抜けられます。
とりあえずDockerでMySQLを動かすところまでできました。
いろいろ試して理想形まで持っていきたいと思います。