orangeitems’s diary

クラウドではたらくエンジニアの日々の感想です。

Docker for Windows上のCentOS7コンテナでapacheを起動するまでの手順をまとめる

f:id:orangeitems:20180618153248p:plain

目的

前回の記事で、Docker for Windowsをインストールし、CentOSを起動するところまでできました。

今回は、apache HTTP Serverを起動するまでをご紹介します。

 

前提条件

コンテナは起動していないものとします。また、centos:latestイメージがすでにダウンロードされているものとします。

C:>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

C:>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              49f7960eb7e4        13 days ago         200MB

 

手順

centos:latestイメージを起動し、httpdパッケージをインストール、起動まで行う

まず、centos:latestイメージにてコンテナを起動します。

なお、ここでは特権モードかつバックグラウンドで起動します。これがないとデーモンが起動できません。

そして、動作しているコンテナ上でbashシェルを起動します。

その後、httpd yumパッケージをインストールします。その後httpdを起動し、かつ自動起動設定まで完了させます。

 

C:>docker run --privileged -d --name centos centos /sbin/init
6225c18ba8d0ebcd7016d7a180c43e94db99f012a93061a6b4e355126c9b244a

C:>docker exec -it centos /bin/bash
[root@6225c18ba8d0 /]# yum -y install httpd
(省略)
Completed!

[root@6225c18ba8d0 /]# systemctl start httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.


※ここまで来たら、ctrl+p、ctrl+qを押してシェルを抜けましょう。

これで、 起動までコンテナ上でのhttpdデーモンの起動まで完了しました。

 

現在のコンテナの状態を永続化する(イメージ化)

今のままではexitするとまた消えてしまいます。この状態をイメージとして取得します。

C:>docker commit 6225c18ba8d0 centos:httpd
sha256:7595d7e49532c07e549e0f15f0f2edd1fa8ccf6eb7027d528bc643eab1cefcaf
C:>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              httpd               7595d7e49532        28 seconds ago      308MB
centos              latest              49f7960eb7e4        13 days ago         200MB

この通り、centos:httpdというイメージが作成されたことがわかります。ここまで来たら、もともとのコンテナは停止しておきます。

C:>docker stop 6225c18ba8d0
6225c18ba8d0
C:>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

 

 

作成したイメージで起動する

さて、httpdが起動するイメージができたので、これをコンテナとして起動します。また、起動するときに80番ポートはWindowsの8080番ポートとしてポートフォワードするようにします。bashにてシェルを起動し、httpdを起動させます。

C:>docker run --privileged -d -p 8080:80 --name httpd centos:httpd /sbin/init
2abf19cab8c4bea375c781e08809ce15da4b4d33ad5a36ef0956e5660356f2bd C:>docker exec -it httpd /bin/bash
[root@2abf19cab8c4 /]# systemctl start httpd

 

ブラウザからアクセスする

最後です。Windowsのブラウザからhttpdにアクセスしましょう。

http://localhost:8080

を開くと・・。

 

f:id:orangeitems:20180618170802p:plain

 

無事出力されました!

 

まとめ

Windowsでも、Linuxの開発環境を構築するのはDocker for Windowsを使えば簡単にできることがわかりました。Docker Hubにはたくさんのイメージがアップロードされており、今後もいろいろ試してみたいと思います。