こんにちは。文系学生でありながら、エンジニアとして働けることが決まり、入社時期に向けて日々基礎から学んでいっている大学生です。
今回は、簡易アプケーションサービスを自作するためにその環境構築としてDocker
を使うことになりました。
【今回目標とする環境構築】
①Docker for macをインストール
②CentOS6イメージを取得
③コンテナを起動し、コンテナに入る
④コンテナ内でApache、MySQL、Perlのインストール
これをLAMP環境といいます。
L → Linux
A → Apache
M → MySQL
P → Perl(PHP, python)
【参照】
LAMP環境ってなに?Webサービスを作るための環境構築を理解しよう
今回がDockerの一つ一つの説明を超ざっくりと説明しながら、このLAMP環境の構築を目指します。
最終的に大まかな流れだけでもつかんでいただければ幸いと思います。
それでは始めていきましょう。
##Dockerとは
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。Dockerを使うことによって、OSとアプリがインストールされた環境を閉じ込めて保存しておき、いつでもその環境を立ちあげることができます。
【引用】https://qiita.com/sivertigo/items/2211fc90cf13e0173cf3
この図を以下の①~④までの流れを終えることによって、少しでも理解が出来ればと思います。
今回の場合、これのUbuntuがCentOS6イメージとなり、コンテナ1を立ち上げそこにApache、MySQL、Perlがインストールされた環境を作ることが目標ですね。
Dockerはその環境を作成し、保存しておくための手段といったとこですかね(雑)
##①Docker for macをインストール
よくわからないと思いますが、下記のサイトからひとまずインストールしてみましょう。
https://docs.docker.com/docker-for-mac/install/
右上のアイコンをクリックすれば、Dockerが起動しているかどうか確認できると思います。
次にターミナルやiTerm2といったコマンドラインツールを開きましょう。
Dockerformacをインストールことにより、dockerコマンドが使えるようになります。
$ docker
これから$docker ~~
といったコマンドを打っていきますが、これはDocker for macをインストールしたためだと思っていただければ大丈夫です。
##②CentOS6イメージの取得
Dockerイメージ
Dockerは、主にこのイメージにさまざまなアプリケーションやLinuxOSが保管されています。
その保管場所が、DockerHubという場所であり、そこに各々がpush(あげる)ことにより、様々な人が同じ環境を共有できます。
DockerHubからCentOSイメージを取得するためにはdocker pull
コマンドを使います。
つまりCentOSイメージとは、CentOSというLinuxOSがインストールされたイメージになります。
それを先ほどインストールしたことにより使えるようになった$ docker
コマンドで取得すればいいわけですね。
$ docker pull centos:6.9
これで取得完了です。
インストール済みのイメージの確認は、$ docker images
コマンドで確認できます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 6.9 adf829198a7f 3 weeks ago 195MB
インストールされてますね。
それでは次に進みましょう。
##③コンテナを起動し、コンテナに入る
###コンテナを起動
Dockerコンテナ
コンテナとは、OSの内部に独立したアプリケーションの実行環境のことを言います。
起動中のコンテナは$ docker ps
で確認できます。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
今はまだ何も起動していませんね。
ちなみに止まっているコンテナも含めて確認するには$ docker ps -a
を使えばいいみたいです。
それではコンテナを作成し、起動させましょう。
Dockerイメージを使用して、コンテナを起動するためには、$ docker run
コマンドを使います。
「centos」というDockerイメージを使用して、コンテナを起動させます。
$ docker run docker run -d -p 8181:80 centos:6.9 /sbin/init
-d:コンテナをバックグラウンド実行
-p:ホストとコンテナ間のポートフォワード設定 -p <ホスト側のポート>:<コンテナ側のポート>
/sbin/init: 詳しくはこちら
※この辺は自分で動かしていくうちに、疑問に思った一つ一つのコマンドの意味を調べてしっかり理解していくといいと思います。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
216cbd5ce8c7 centos:6.9 "/sbin/init" 24 minutes ago Up 24 minutes 0.0.0.0:8181->80/tcp elastic_wright
たしかにコンテナが作成し、起動できていますね。
そしたら次はコンテナの中に入ります。
###コンテナに入る
コンテナに入るには$ docke exec
コマンドを使います。
$ docker exec -it 216 /bin/bash
-it:標準入力を開き続け、そこを操作出来るようにする
216:ここは入るコンテナのCONTAINER ID
またNAME
を入力します。
※CONTAINER ID
は上3桁で大丈夫なので、今回は216cbd5ce8c7
のうちの216
を入力します。
/bin/bash:bashプロセス
【参照】
docker exec -itって実際は何をしてるの?
さてこれでコンテナに入ることはできました。
コンテナに入れると下記のような表示になると思います。
[root@216cbd5ce8c7 /]#
ここまできたらあとはインストールするだけですね。
ラスト頑張って行きましょう!
##④コンテナ内でApache、MySQL、Perlのインストール
インストールにはyum install
コマンドを使います。
Apacheインストール
# yum -y install httpd
MySQLインストール
# yum -y install mysql mysql-devel mysql-server mysql-utilities
Perlインストール
# yum -y install perl-CPAN.x86_64
これでそれぞれのインストール完了です。
しかし、このままだとそれぞれアプリケーションは止まった状態にあるので、起動させなくてはなりません。
Apache起動
# service httpd start
MySQL起動
# service mysqld start
これでlocalhostで設定したポート8181で、Apacheを開いてみましょう。
無事開けましたね。
これで今回の目標は達成です!
ここで最初に添付した画像を見てみて下さい。
最初見たときよりも、大まかなイメージが掴めたんじゃないでしょうか。
それが達成できれば、この記事の意義を果たすことができたと思います。
最後までお付き合いしていただきありがとうございましたmm
###【参考にさせていただいた文献様】
・Docker入門
・【初心者向け】Docker for Macで開発環境を作る(アプリサーバとDBサーバのコンテナ間連携まで)
・Docker Tips 目次~Cloud ServerでDockerを使おう~
##最後に
今回は自分がまだ学びはじめということもあり、かなりざっくりと説明になってしまいました。
まあ、もともとタイトルに最低限と書いてある通りなのですが(笑)
それでもDockerでも触っているうちに、よくわからないまま打っているコマンドや使わなきゃいけない知らないコマンドが出てくると思います。そういうのも含めて自分で動かし、分からないことは調べて少しずつ理解していくことが自分の成長に繋がってくるんだと思います。
どうしても最初の掴みは分からないことだらけで、大変ですがそういう時はこういった **【初心者向け】**のサイトを見つけて頑張って行きましょう。
自分もこれを機に記事を出しつつ、理解を深めていきます。
本当に最後までありがとうございました。