【Docker】第2回 コンテナ上でhttpdを動かしてみる


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

今回は、「Docker Hub」に公開されている公式イメージ「httpd」を利用して、コンテナ操作のコマンドを簡単に説明していきます。

 

 

 

Docker Hubとは?

Docker Hubは、Docker社が営利目的で開発・運営しているサービスです。
自分で作成したコンテナをアップロードして公開・共有することができます。


コンテナは「リポジトリ」という単位で管理され、タグを使ったバージョン管理も可能です。
無制限に作成できる公開リポジトリ(パブリックリポジトリ)のほか、一般公開されないプライベートリポジトリも作成できます。


Docker Hub上にリポジトリを作成するには、アカウント登録が必要です。
無料ユーザーの場合作成できるプライベートリポジトリは1つだけとなりますが、有料プランなら作成可能なプライベートリポジトリ数を増やすことが可能です。


Docker HubにはCanonical、Oracle、Red Hat などのベンダやコントリビュータ(貢献者)によって公開され、Docker 社によって認証を受けている、多くの 「公式リポジトリ」 があります。ユーザーはこれらを自由に使用することができます。
(コンテナイメージの検索・取得だけであれば、Docker Hubアカウントを作成しなくても利用できます。)

Docker Hubからイメージを取得する

では、「Docker Hub」からhttpd コンテナのイメージをダウンロードしていきます。

まずは、httpdに関するコンテナがどれだけ公開されているのか、検索してみましょう。searchコマンドを実行します。

 
$ docker search httpd

 


※limitオプションを指定しない場合、25件が上限となります。
※公式イメージのみを検索したい場合は、以下の様にfilterオプションを指定します。

$ docker search --filter "is-official=true" httpd


公式イメージの「httpd」があるので、それをpullコマンドでダウンロードしましょう。
※バージョンを指定しない場合、最新版を取得します。

 
$ docker pull httpd

 

Using default tag: latest
latest: Pulling from library/httpd
…
Status: Downloaded newer image for httpd:latest


最新版が取得できました。ではimagesコマンドで現在自分が保有しているイメージのリストを
確認してみましょう。

 
$ docker images

 

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              2a51bb06dc8b        2 weeks ago         132MB
hello-world         latest              4ab4c602aa5e        2 months ago        1.84kB


前回使用した「hello-world」の他に、「httpd」が追加されていることが確認できました。

コンテナを操作してみる

続いて、実際にコンテナイメージを起動してみます。

 
$ docker run -d -p 8080:80 httpd


コマンドが通ったら、ブラウザから「http://localhost:8080」へアクセスしてみましょう。「It Works!」画面が表示されれば成功です。

psコマンドで、実行中コンテナの状態を確認できます。

 
$ docker ps

 

CONTAINER ID  IMAGE  COMMAND        CREATED        STATUS         PORTS           NAMES
7f389a9b265d  httpd  "httpd-foreground" About a minute ago  Up About a minute  0.0.0.0:8080->80/tcp  xenodochial_hugle


httpdコンテナが起動している状態であることが確認できます。

※NAMESは、コンテナ起動時にオプションで指定しない場合、Dockerがランダムな名称を付与します。


続いて、stopコマンドでコンテナIDを指定し、コンテナを停止してみます。

 
$ docker stop 7f389a9b265d


コマンドが通ったら、再度ブラウザから「http://localhost:8080」へアクセスしてみましょう。今度はページにアクセスできないはずです。

もう一度、psコマンドで確認します。今度は「-a」オプションで、停止中のコンテナも含め全て表示してみましょう。

CONTAINER ID  IMAGE      COMMAND        CREATED         STATUS                    PORTS  NAMES
7f389a9b265d  httpd      "httpd-foreground"  26 minutes ago  Exited (0) 5 minutes ago         xenodochial_hugle
fd861c5cb6e5  hello-world  "/hello"        2 weeks ago     Exited (0) 2 weeks ago           nervous_kalam


STATUSが「Exited」となっています。
この状態で、同じコンテナを再開する場合は、startコマンドでコンテナIDを指定すればOKです。

 
$ docker start 7f389a9b265d


動作中のコンテナを強制終了したい場合は、killコマンドを実行します。実行するとコンテナは「Exited」になります。

 
$ docker kill 7f389a9b265d


停止中のコンテナを削除する場合は、rmコマンドを実行します。

 
$ docker rm 7f389a9b265d


psコマンドに「-a」オプションをつけると、停止中も含め全てのコンテナが確認できます。
rmで削除してあるので、httpdコンテナがいなくなっていることが確認できます。

 

CONTAINER ID  IMAGE      COMMAND        CREATED         STATUS                    PORTS  NAMES
fd861c5cb6e5  hello-world  "/hello"        2 weeks ago     Exited (0) 2 weeks ago           nervous_kalam


再度runコマンドでhttpdを起動した場合は、別のプロセスとして新たなコンテナIDが割り当てられます。

 

今回はDocker Hubからイメージを取得し、コンテナを操作するところまででした。

次回は、コンテナ内部の設定を編集して新しいイメージとして永続化する方法を
確認していきます。


  お問い合わせ  - お気軽にお問い合わせください - 

  • 株式会社 パブリックリレーションズ
  • 〒064-0807
  • 北海道札幌市中央区南7条西1丁目13番地 弘安ビル5階
メールでのお問い合わせはこちら

  • この記事をシェアする