Dockerコンテナに単純なApache Webサーバを設定する方法


開発者にサポートを提供しているLinuxシステム管理者であれば、 Docker のことを聞いたことがあるでしょう。そうでなければ、このソフトウェアソリューションは、運用コストを削減し、展開を加速することで、今日からあなたの生活を楽にします。

しかし、それは魔法ではありません。プラットフォームとしての Docker はコンテナを活用します - 環境の違いを排除するために実行する必要があるすべてのツールと一緒にアプリケーションのパッケージ。

つまり、コンテナー化されたソフトウェアは、どこにインストールされていようとも動作し、一貫して管理できます。さらに、コンテナーは古き良き仮想マシンよりもセットアップ、開始、停止、および保守がはるかに簡単です。これら2つのテクノロジの違いについて詳しく知りたい場合は、Dockerの公式Webサイトに詳しい説明があります。

例証するために、この記事では CentOS 7 Ubuntu 16.04 Docker をインストールし、Apache 2.4を起動する方法を説明します。 Docker Hub コンテナ。

それから、私たちのホームディレクトリから単純なWebページを提供するためにそれを使用します - 私たちのホストにWebサーバーをインストールする必要なしに。

CentOSとUbuntuにDockerをインストールする

まず、次のコマンドを使用して Docker をインストールしましょう。これにより、Dockerリポジトリをシステムに追加してパッケージをインストールするシェルスクリプトがダウンロードされ、実行されます。

# curl -fsSL https://get.docker.com | sh

次に、 systemctl コマンドを使用してメインの Docker サービスを開始し、そのステータスを確認します。

# systemctl start docker
# systemctl status docker

この時点で私達は単に実行することができます。

# docker

使用可能なコマンドのリストを表示したり、ヘルプを入手したりします。

# docker COMMAND --help
# docker ps --help

システムに存在するコンテナを一覧表示する方法を教えてくれます。

# docker run --help

コンテナを操作するために使用できるすべてのオプションを表示します。

Apacheコンテナを設定する

Docker エコシステムの素晴らしいところの1つは、簡単にダウンロードして使用できる標準のコンテナーが数十個あるということです。次の例では、現在の端末から切り離された tecmint-web という名前の Apache 2.4 コンテナをインスタンス化します。 Docker Hub httpd:2.4 という画像を使用します。

私たちの計画では、ポート 8080 のパブリックIPアドレスへのリクエストをコンテナのポート 80 にリダイレクトします。また、コンテナ自体からコンテンツを提供するのではなく、/home/user/website の簡単なウェブページを提供します。

これは、コンテナの/usr/local/apache2/htdocs//home/user/website/をマッピングして行います。続行するには sudo を使用するか root としてログインする必要があります。各ディレクトリの末尾のスラッシュは省略しないでください。

# sudo docker run -dit --name tecmint-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4

これで、 Apache コンテナは起動しています。

$ sudo docker ps

それでは、/home/user/websiteディレクトリ内に docker.html という名前の単純なWebページを作成しましょう。

# vi /home/user/website/docker.html

次のサンプルHTMLコンテンツをファイルに追加します。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Learn Docker at Tecmint.com</title>
</head>
<body>
    <h1>Learn Docker With Us</h1>   
</body>
</html>

次に、ブラウザで AAA.BBB.CCC.DDD:8080/docker.html AAA.BBB.CCC.DDD はホストのパブリックIPアドレス)に移動します。以前作成したページが表示されます。

あなたが望むなら、あなたは今コンテナを止めることができます。

$ sudo docker stop tecmint-web

そしてそれを削除します。

$ sudo docker rm tecmint-web

クリーンアップを終了するには、コンテナで使用されていたイメージを削除します(他の Apache 2.4 コンテナをすぐに作成する予定がある場合は、この手順を省略してください)。

$ sudo docker image remove httpd:2.4

上記のすべての手順で、Webサーバーをホストにインストールする必要がなかったことに注意してください。

この記事ではDockerをインストールしてコンテナーを操作する方法を説明しました。残念ながら、これらは基本に過ぎません。Dockers(および一般的にはコンテナー)をより詳細に網羅するコース、書籍、および認定試験全体があります。

Dockerについてさらに詳しく知りたい場合は、Dockerのインストール方法、アプリケーションをコンテナーに実行する方法、およびdockerfileを使用してdockerイメージを自動的に構築する方法を説明した3連載の記事を既に取り上げました。

  1. Install Docker and Learn Basic Container Manipulation in CentOS and RHEL 7/6
  2. How to Deploy and Run Applications into Docker Containers on CentOS/RHEL 7/6
  3. Automatically Build and Configure Docker Images with Dockerfile on CentOS/RHEL 7/6
  4. How to Remove Docker Images, Containers and Volumes

これをあなたの出発点として考えてください、そしてあなたが質問またはコメントがあるかどうか私たちに知らせてください - 私たちはあなたからの連絡をお待ちしています!