LoginSignup
1
1

More than 5 years have passed since last update.

仮想化環境のスキル更新:CentOSでDockerに触れる

Last updated at Posted at 2018-04-01

私が言うまでもありませんが、仮想化環境は日進月歩で進化しており、
メイン業務の環境ではこれまではサーバ仮想化が幅を利かせていましたが、
ぼちぼちコンテナ型仮想化のDockerが乗り込んで来そうな雰囲気です。

その昔、サーバ仮想化にのめり込んで自宅にサーバルーム(大した設備ではないです)を構築し、
VMwareとHyper-Vで遊んできた私ですが、この度、Hyper-V上にDocker環境を構築して、
学習を始めてみることにしました。

1.CentOSの準備

Hyper-V上にCentOSを準備します。
執筆時点(2018.04.01)ではCentOS7.4が最新版でした。
CentOSは「サーバー(GUI使用)」でベース環境を選択しました。
この時点で特には他に何も入れておりません。
ちなみにホスト名は「centos74-docker」です。

2.Dockerのセットアップ

こちらを参考にDockerのセットアップを行いました。
@inakadegaebalさん)
https://qiita.com/inakadegaebal/items/be9fecce813cebec5986

Dockerのパッケージは執筆時点では以下の通りでしたので、最新版(18.03.0)を導入しました。

[root@centos74-docker ~]# yum list docker-ce.x86_64 --showduplicates | sort -r
利用可能なパッケージ
読み込んだプラグイン:fastestmirror, langpacks
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable


[root@centos74-docker ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2018-04-01 18:25:39 JST; 1min 43s ago
     Docs: https://docs.docker.com
 Main PID: 5244 (dockerd)
   Memory: 49.8M
   CGroup: /system.slice/docker.service
           ├─5244 /usr/bin/dockerd
           └─5248 docker-containerd --config /var/run/docker/containerd/containerd.toml

 4月 01 18:25:35 centos74-docker dockerd[5244]: time="2018-04-01T18:25:35.656787401+09:00" level=info msg="Loading containers: start."
 4月 01 18:25:37 centos74-docker dockerd[5244]: time="2018-04-01T18:25:37.598452144+09:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon optio...d IP address"
 4月 01 18:25:38 centos74-docker dockerd[5244]: time="2018-04-01T18:25:38.967115625+09:00" level=info msg="Loading containers: done."
 4月 01 18:25:39 centos74-docker dockerd[5244]: time="2018-04-01T18:25:39.170452711+09:00" level=info msg="Docker daemon" commit=0520e24 graphdriver(s)=overlay2 version=18.03.0-ce
 4月 01 18:25:39 centos74-docker dockerd[5244]: time="2018-04-01T18:25:39.171334883+09:00" level=info msg="Daemon has completed initialization"
 4月 01 18:25:39 centos74-docker dockerd[5244]: time="2018-04-01T18:25:39.344098963+09:00" level=info msg="API listen on /var/run/docker.sock"
 4月 01 18:25:39 centos74-docker systemd[1]: Started Docker Application Container Engine.
 4月 01 18:25:57 centos74-docker dockerd[5244]: time="2018-04-01T18:25:57+09:00" level=info msg="shim docker-containerd-shim started" address="/containerd-shim/moby/da1dff6785b1f98fe76607ca5...sks" pid=5381
 4月 01 18:25:59 centos74-docker dockerd[5244]: time="2018-04-01T18:25:59+09:00" level=info msg="shim reaped" id=da1dff6785b1f98fe76607ca54472c2b5dde531db6caea92fdd594a5c57394dc module="containerd/tasks"
 4月 01 18:25:59 centos74-docker dockerd[5244]: time="2018-04-01T18:25:59.266404647+09:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Hint: Some lines were ellipsized, use -l to show in full.

3.DockerにApache(httpd)をセットアップ

これだけではどうなっているかよく分からないので、オーソドックスにApacheを導入してみました。
こちらの「docker コンテナの作成・実行」から参考にさせて頂きました。
(fnyaさん)
http://fnya.cocolog-nifty.com/blog/2016/03/centos7-docker-.html

httpdという名前でイメージを作成して動かすように変更しています。

[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
a0db7f26d277        centos              "/bin/bash"         8 minutes ago       Exited (1) 12 seconds ago                       centos7
da1dff6785b1        hello-world         "/hello"            30 minutes ago      Exited (0) 30 minutes ago                       practical_ptolemy
[root@centos74-docker home]# docker commit centos7 httpd
sha256:1fd7501390ba665118cd2dbf9554a6518e8f8a4e4cfdafa7bbd2fc807702c779
[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
a0db7f26d277        centos              "/bin/bash"         10 minutes ago      Exited (1) About a minute ago                       centos7
da1dff6785b1        hello-world         "/hello"            31 minutes ago      Exited (0) 31 minutes ago                           practical_ptolemy
[root@centos74-docker home]# 
[root@centos74-docker home]# 
[root@centos74-docker home]# docker run --privileged -d -p 80:80 --name httpd httpd /sbin/init
9f8db5a1dec893bb890b1e56f4db5571acad0ff80dc2d4e247dc6386c53d6a0f
[root@centos74-docker home]# docker exec -it httpd /bin/bash
[root@9f8db5a1dec8 /]# systemctl enable httpd.service
[root@9f8db5a1dec8 /]# systemctl start httpd.service
[root@centos74-docker home]# curl -s http://localhost/ | head -n 1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head>
[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                      PORTS                NAMES
9f8db5a1dec8        httpd               "/sbin/init"        About a minute ago   Up About a minute           0.0.0.0:80->80/tcp   httpd
a0db7f26d277        centos              "/bin/bash"         14 minutes ago       Exited (1) 5 minutes ago                         centos7
da1dff6785b1        hello-world         "/hello"            35 minutes ago       Exited (0) 35 minutes ago                        practical_ptolemy

curlコマンドの結果でhttpのレスポンスが返ってきているので動作しているのは明白ですが、一応ブラウザでもチェック。

centos_docker_httpd_20180401.png

無事トップページを見ることができました。

4.Dockerコマンド他

Dockerへのログイン

[root@centos74-docker home]# docker exec -it httpd /bin/bash
[root@9f8db5a1dec8 /]# ps -ef | grep httpd
root        50     1  0 10:00 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache      64    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      66    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      67    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      68    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      69    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     103    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     104    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     105    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       120   106  0 11:17 pts/1    00:00:00 grep --color=auto httpd

Dockerからのログアウト

[root@centos74-docker home]# docker exec -it httpd /bin/bash
[root@9f8db5a1dec8 /]# ps -ef | grep httpd
root        50     1  0 10:00 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache      64    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      66    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      67    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      68    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      69    50  0 10:00 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     103    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     104    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     105    50  0 10:03 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       120   106  0 11:17 pts/1    00:00:00 grep --color=auto httpd

[root@9f8db5a1dec8 /]# read escape sequence (「Ctrl+p」+「Ctrl+q」を押下でログアウト)
[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS                NAMES
9f8db5a1dec8        httpd               "/sbin/init"        2 hours ago         Up 2 hours               0.0.0.0:80->80/tcp   httpd
a0db7f26d277        centos              "/bin/bash"         2 hours ago         Exited (1) 2 hours ago                        centos7
da1dff6785b1        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                        practical_ptolemy

Dockerのスタート・ストップ

docker start {コンテナー名}|{コンテナーID} 
docker stop {コンテナー名}|{コンテナーID}


[root@centos74-docker home]# docker stop httpd
httpd
[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
9f8db5a1dec8        httpd               "/sbin/init"        2 hours ago         Exited (137) 9 seconds ago                       httpd
a0db7f26d277        centos              "/bin/bash"         3 hours ago         Exited (1) 3 hours ago                           centos7
da1dff6785b1        hello-world         "/hello"            3 hours ago         Exited (0) 3 hours ago                           practical_ptolemy
[root@centos74-docker home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

# dokcer ps は稼働中のモノだけみせてくれるそうです。

[root@centos74-docker home]# docker start httpd
httpd
[root@centos74-docker home]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES
9f8db5a1dec8        httpd               "/sbin/init"        2 hours ago         Up 5 seconds        0.0.0.0:80->80/tcp   httpd
[root@centos74-docker home]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS                NAMES
9f8db5a1dec8        httpd               "/sbin/init"        2 hours ago         Up 10 seconds            0.0.0.0:80->80/tcp   httpd
a0db7f26d277        centos              "/bin/bash"         3 hours ago         Exited (1) 3 hours ago                        centos7
da1dff6785b1        hello-world         "/hello"            3 hours ago         Exited (0) 3 hours ago                        practical_ptolem

今後の学習

Webサーバは導入できたので、今後はアプリケーションサーバやDBなどを導入して遊んでみたいと思います。
また、アップデート差分の抜き出し・反映や別の環境へのインポートなど。

1
1
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
1
1