コンテナ上で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階 011-520-1800 011-520-1802