CentOSの環境を作成したいというときにDockerを使うというのも最近では主流になってきていますよね。
手元にLinux機がない場合はこれまでは仮想マシンを用いることが多かったですが、近年はコンテナの一つであるDockerがよく用いらています。大コンテナ時代とも言われるほどなのでしっかりDockerを使えるようになっていきたいですね。
そこで本日は、
- なぜDockerなのか
- Dockerのどこが良いのか
- DockerでCentOS7の環境を構築する
ということを詳しく解説していきます。途中でDockerコマンドなどについても詳しく説明していくのでDocker初心者でCentOSの環境を構築したいという方は是非参考にしていただければ幸いです!
なぜDockerなのか
それでは、最初になぜDockerなのか、Dockerとは何かということを簡単に説明していきましょう。Dockerも仮想環境を作る一つの技術ですが、VirtualBoxのような仮想マシンを作る必要はありません。コンテナという概念で、仮想環境を作っていきます。
わかりやすくVirtualBoxなどとの違いをあげると、仮想マシンは、ホストマシン上でゲストOSを動かし、その上でミドルウェアなどを動かすのに対し、コンテナはホストマシンのカーネルを利用し、ユーザやプロセスを切り離すことで仮想環境ができているように見せるものです。
もっとわかりやすくいうと、仮想マシンは、ホストマシン上で頑張って他のOSを動かすのに対し、コンテナはカーネルを利用してサーバごとにプロセスなどを隔離するということです。
つまり、コンテナはOSを複数のサーバが共通して利用するため軽量で起動や停止が高速というメリットがあります。詳しくわからない方は今は、Dockerは軽くて早くてイケてるんだな、くらいに思っておいても良いでしょう。
CentOS7の環境を構築しよう
さて、それでは実際に環境を構築していきましょう。サクッと構築できるので仮想マシンなどとは違って便利ですね。
イメージの取得
まずは元となるイメージを取得します。仮想マシンとは違いISOファイルをDLする必要はなくDockerコマンドを使ってCentOSのDockerイメージを入手します。
具体的にはdocker pullコマンドを使います。docker pull の後に欲しいイメージを入れるので今回でdocker pull の後に欲しいイメージを入れるので今回であれば以下のようにしましょう。
docker pull centos:centos7
centos7: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:centos7
仮想マシンのISOイメージとは違いすぐpullできますね。
docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos centos7 1e1148e4cc2c 2 months ago 202MB ubuntu 18.04 93fd78260bd1 3 months ago 86.2MB
docker imagesコマンドで、取得したイメージが表示できるのでcentosが入っていることを確認しましょう。
コンテナの作成
Dockerイメージをpullしてきたところで、次はコンテナの作成を行なっていきます。コンテナの作成にはdocker runコマンドを使います。ちなみに、作成すると自動で起動します。
今回は、オプションをつけて、以下のコマンドで実行しましょう。
docker run -it -d --name mycentos centos:centos7
オプションの説明をします。
- it: ターミナルでコンテナを実行できる
- d: デーモンの略でバックグラウンドでコンテナを実行する
- name: コンテナに名前をつける(本コマンドではmycentos)
これらは全てよく使うオプションですのでrunコマンドとセットで覚えてしまいましょう。起動中のコンテナを確認するためにdocker psコマンドを利用しましょう。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84d8a969e2e7 centos:centos7 "/bin/bash" 33 seconds ago Up 32 seconds mycentos
このようにmycentosが立ち上がっていることが確認できますね。実際にコンテナを操作するには、docker execコマンドを利用します。
今回はmycentosのbashを実行するので以下のコマンドを叩いてみましょう。
docker exec -it mycentos /bin/bash [root@84d8a969e2e7 /]#
するとこのように、CentOSのシェルに入れましたね。バージョンを見てみると以下のようにきちんとCentOS7が入っています。
[root@84d8a969e2e7 /]# cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION=“7"
コンテナの停止
次はコンテナの停止を見てみましょう。停止にはdocker stopコマンドを使います。
docker stop mycentos
ほんとに止まったか確認して見ましょう。
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
このように、何も起動していませんね。ちなみにdocker psにaオプションをつけると停止したコンテナを確認できます。
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84d8a969e2e7 centos:centos7 "/bin/bash" 8 minutes ago Exited (137) 56 seconds ago mycentos
きちんと表示されますね。
コンテナの起動
先ほどはdocker runで作成と起動を同時に行いましたが、一度作成したコンテナはdocker startコマンドで起動させます。
docker start mycentos
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 84d8a969e2e7 centos:centos7 "/bin/bash" 9 minutes ago Up 5 seconds mycentos
きちんと起動していますね。
まとめ
いかがでしたでしょうか? 仮想マシンとは比べ物にならないほど早く環境を構築することができたのではないでしょうか?Dockerは今流行りの技術ですので、コマンドや概念などをしっかり理解して使えるようにしておきましょう!