【初心者向け】DockerでCentOS7の環境を構築しよう!

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は今流行りの技術ですので、コマンドや概念などをしっかり理解して使えるようにしておきましょう!

この記事を書いた人

日向徹かこよすぎか

kaikaikai8217@gmail.com

目次