LoginSignup
15
6

More than 5 years have passed since last update.

【初心者】必要最低限なDockerのコンテナ立ち上げまでの知識をまとめてみた

Last updated at Posted at 2018-09-02

こんにちは。文系学生でありながら、エンジニアとして働けることが決まり、入社時期に向けて日々基礎から学んでいっている大学生です。
今回は、簡易アプケーションサービスを自作するためにその環境構築としてDockerを使うことになりました。

【今回目標とする環境構築】
①Docker for macをインストール
②CentOS6イメージを取得
③コンテナを起動し、コンテナに入る
④コンテナ内でApache、MySQL、Perlのインストール

これをLAMP環境といいます。

LAMP環境
L → Linux
A → Apache
M → MySQL
P → Perl(PHP, python)

【参照】
LAMP環境ってなに?Webサービスを作るための環境構築を理解しよう

今回がDockerの一つ一つの説明を超ざっくりと説明しながら、このLAMP環境の構築を目指します。
最終的に大まかな流れだけでもつかんでいただければ幸いと思います。

それでは始めていきましょう。

Dockerとは

Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。Dockerを使うことによって、OSとアプリがインストールされた環境を閉じ込めて保存しておき、いつでもその環境を立ちあげることができます。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3131373336392f34353537616361302d653733392d306138372d633032342d3839333537326166616264612e706e67.png
【引用】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を起動させてみましょう。

右上のアイコンをクリックすれば、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を開いてみましょう。
スクリーンショット 2018-09-02 11.04.14.png

すると
スクリーンショット 2018-09-02 10.54.04.png

無事開けましたね。
これで今回の目標は達成です!
ここで最初に添付した画像を見てみて下さい。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3131373336392f34353537616361302d653733392d306138372d633032342d3839333537326166616264612e706e67.png
最初見たときよりも、大まかなイメージが掴めたんじゃないでしょうか。
それが達成できれば、この記事の意義を果たすことができたと思います。
最後までお付き合いしていただきありがとうございましたmm

【参考にさせていただいた文献様】

Docker入門
【初心者向け】Docker for Macで開発環境を作る(アプリサーバとDBサーバのコンテナ間連携まで)
Docker Tips 目次~Cloud ServerでDockerを使おう~

最後に

今回は自分がまだ学びはじめということもあり、かなりざっくりと説明になってしまいました。
まあ、もともとタイトルに最低限と書いてある通りなのですが(笑)
それでもDockerでも触っているうちに、よくわからないまま打っているコマンドや使わなきゃいけない知らないコマンドが出てくると思います。そういうのも含めて自分で動かし、分からないことは調べて少しずつ理解していくことが自分の成長に繋がってくるんだと思います。
どうしても最初の掴みは分からないことだらけで、大変ですがそういう時はこういった 【初心者向け】のサイトを見つけて頑張って行きましょう。
自分もこれを機に記事を出しつつ、理解を深めていきます。
本当に最後までありがとうございました。

15
6
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
15
6