Tech Blog

エンジニアが残すITブログです。

コンテナでApache Webサービスを起動してみる

CentOSのDockerコンテナに、ApacheWebサーバ "httpd" をインストールして、そのDockerイメージからApache Webサービスを起動させてみます。

CentOSのDockerコンテナ起動

CentOSのコンテナを起動して、コンテナに入ります。※今回はバージョン7.5.1804を使用します。

> docker container run -it --name centos01 -h  centos01 centos:7.5.1804 /bin/bash

コンテナ起動の詳細はこちら↓

httpdパッケージのインストール

次に、httpdパッケージをインストール。
同時に、IPアドレスを表示するためのIPコマンドが含まれるiprouteパッケージをインストールしておきます。

> yum install -y httpd iproute

※プロキシサーバの設定が必要な場合は、事前にプロキシサーバを設定しましょう。

> echo "proxy=http://{proxy.your.site}:8080" >> /etc/yum.conf

テスト用のWebコンテンツを作成

Dockerコンテナ内に、テスト用のWebコンテンツ「test.html」を配置します。

> echo "確認用のWebコンテンツです。" > /var/www/html/test.html

Dockerイメージの作成

exitでコンテナから出て、ホストOS側のコマンドプロンプトに戻ります。
httpdをインストールしたDockerコンテナ「centos01」をDockerイメージ 「centos:centos01」として保存します。
※この後、作成したイメージを使って再度コンテナ稼働を確認したいので、稼働中のコンテナ「centos01」は削除しておきます。

> docker container commit centos01 centos:centos01
> docker container rm -f centos01

Dockerコンテナの起動

httpdが入ったDockerイメージ「centos:centos01」を/sbin/initを使って起動します。

> docker container run \
> -it \
> --tmpfs /tmp \
> --tmpfs /run \
> -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
> --stop-signal SIGRTMIN+3 \
> --name centos01 \
> -h centos01 \
> centos:centos01 /sbin/init

CentOSをコンテナで動かしてみる

CentOS Dockerイメージを取得

Docker Hubで公開されているCentOSのDockerイメージを取得します。

> docker image pull centos:7.5.1804


コンテナが取得されたか確認しましょう。

  • TAG:コンテナ操作に用いる
  • IMAGE ID:Dockerが管理する番号で、このIDを使ってDockerイメージを管理する。
> docker image ls
REPOSITORY           TAG            IMAGE ID           CREATED        SIZE
centos               7.5.1804       cf49811e3cdb      2 years ago     200MB

Dockerコンテナの起動

コンテナの操作は、コンテナに付与された「タグ」を使います。

  • -i :Dockerコンテナ起動時に、標準入力を受け付けるオプション
  • -t :仮想端末をコンテナに割り当てる
  • --name:作成するコンテナに名前を付ける
> docker container run -i -t --name test01 centos:7.5.1804 /bin/bash

「--name」オプションにtest01を付与したので、コンテナの名前はtest01になります。上記のコマンド実行後は下記のbashコマンドが表示されます。root@に続く文字列「e6a06e7c3b7f」はコンテナIDです。

[root@e6a06e7c3b7f /]#

コンテナとして起動したCentOSの情報を確認

■OSバージョンを確認

bashコマンドで、OSのバージョンを確認します。

[root@e6a06e7c3b7f /]# cat /etc/redhat-release
■コンテナのホスト名を確認

続いてbashコマンドでホスト名を確認します。ホスト名は自動的にコンテナIDが設定されます。Dockerコンテナ起動時に明示的に指定することもできます。

[root@e6a06e7c3b7f /]# hostname
e6a06e7c3b7f
■コンテナのIPアドレスを確認

IPアドレスを確認して、ホストOSや外部と通信できるか確認しましょう。

  • プロキシサーバ経由でインターネットに接続する場合はコンテナ内でもプロキシサーバの設定が必要です。
[root@e6a06e7c3b7f /]# echo "proxy=http://{your proxy server url}" >> /etc/yum.conf
  • ipコマンドが含まれるiproute RPMパッケージをインストールします。
[root@e6a06e7c3b7f /]# yum install -y iproute
Loaded plugins: fastestmirror, ovl
......

Complete!
■コンテナ上からホストOS側に通信できるか確認

XXXの部分には、ホストOSのIPアドレスを指定します。pingが通り、通信できていることが分かります。

[root@e6a06e7c3b7f /]# ping -c 3 XXX.XXX.XX.XXX
PING 192.168.43.1 (192.168.43.1) 56(84) bytes of data.
64 bytes from 192.168.43.1: icmp_seq=1 ttl=37 time=9.38 ms
64 bytes from 192.168.43.1: icmp_seq=2 ttl=37 time=6.97 ms
64 bytes from 192.168.43.1: icmp_seq=3 ttl=37 time=7.31 ms

--- 192.168.43.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 6.975/7.892/9.389/1.067 ms
■コンテナ上から外部のアドレスと通信できるか確認

nslookupコマンドで外部アドレス(ここでは任天堂のアドレスで試してみます)を指定し、通信できるかを確認します。

  • nslookupコマンドが含まれるbind-utilsパッケージをインストールします。
[root@e6a06e7c3b7f /]# yum install build-urils
Loaded plugins: fastestmirror, ovl
......

Complete!
  • nslookupコマンドで通信できるか確認します。
[root@e6a06e7c3b7f /]# nslookup www.nintendo.co.jp
Server:         192.168.65.5
Address:        192.168.65.5#53

Non-authoritative answer:
www.nintendo.co.jp      canonical name = www.nintendo.co.jp.edgekey.net.
www.nintendo.co.jp.edgekey.net  canonical name = e5192.b.akamaiedge.net.
Name:   e5192.b.akamaiedge.net
Address: 104.118.65.111
www.nintendo.co.jp.edgekey.net  canonical name = e5192.b.akamaiedge.net.

Windows10にDocker Desktop for Windowsを構築

インストール前の事前準備

システム要件の確認

Docker Desktopのインストール環境は、Windows10 Professional または Enterpriseの64bit、もしくはWindows10 Home 64bitである必要があります。

 

Docker IDを準備(Docker Desktopインストールに必須ではない)

Docker DesktopのインストールのみであればDocker IDは不要ですが、Docker HubにイメージをPushしたりする場合はDocker IDが必要になります。

https://hub.docker.com/signup で作成しましょう。

 

インストールして起動


Docker Desktop for Windowsインストーラをダウンロード

https://hub.docker.com/editions/community/docker-ce-desktop-windows の「Get Docker」ボタンをクリックしてインストーラをダウンロードします。インストーラのファイルは「Docker Desktop Installer.exe」です。

※ダウンロードしたことで、Docker Software End User License AgreementとDocker Data Processing Agreement (DPA) に同意したことになります。

f:id:nomhiro:20210529202131p:plain

Docker Desktop ダウンロード

WindowsにDocker Desktop for Windowsをインストール

  1. ダウンロードした「Docker Desktop Installer.exe」をダブルクリックし起動します。

  2. 起動後、Configuration画面で下記チェックボックスにチェックを入れます。
    今回はWindowsへのインストールなので2番目の「Install required Windows components for WSL 2」のチェックは必須です。f:id:nomhiro:20210529203118p:plain
  3.  「Ok」ボタンで終了です。

 

Docker Desktopの起動

最後にインストールしたDocker Desktopを起動しましょう。

  1. WindowsでDockerを検索し、Docker Desktopを起動します。

    f:id:nomhiro:20210529204110p:plain

  2. ステータスバーにDockerのアイコンが出ていれば起動できています。

    f:id:nomhiro:20210529204220p:plain

  3. Docker Desktopの初期画面には、Dockerイメージ作成→実行→Docer HubへのPushのチュートリアルがあるので試してみましょう。