Linux の Docker コンテナに Apache をインストールする方法
開発者にサポートを提供する Linux システム管理者であれば、Docker について聞いたことがあるでしょう。そうでない場合でも、このソフトウェア ソリューションを使用すると、運用コストの削減や展開の加速などの利点が得られるため、今日から作業が楽になります。
しかし、それは魔法ではありません。プラットフォームとしての Docker は、環境間の違いを排除するために実行する必要があるすべてのツールとアプリケーションのパッケージであるコンテナを活用します。
つまり、コンテナ化されたソフトウェアは、インストール場所に関係なく動作し、一貫して管理できます。さらに、コンテナは、古き良き仮想マシンよりもセットアップ、開始、停止、保守がはるかに簡単です。
これら 2 つのテクノロジーの違いについて詳しく知りたい場合は、Docker の公式 Web サイトで詳しい説明が提供されています。
具体的に説明するために、この記事ではCentOS/RHEL、Rocky/Alma Linux、およびDebian/ にDockerをインストールする方法を説明します。 Ubuntu を起動し、Docker Hub から Apache 2.4 コンテナを起動します。
次に、これを使用してホーム ディレクトリから簡単な Web ページを提供します。ホストに Web サーバーをインストールする必要はありません。
Linux への Docker のインストール
まず、次のcurlコマンドを使用してDockerをインストールしましょう。これにより、Docker リポジトリをシステムに追加し、パッケージをインストールするシェル スクリプトがダウンロードされて実行されます。
curl -fsSL https://get.docker.com | sh
次に、systemctl コマンドを使用してメインのDocker サービスを開始し、再起動中に開始できるようにして、そのステータスを確認します。
systemctl start docker
systemctl enable 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 から単純な Web ページを提供します。
これを行うには、コンテナの /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 linux-console.net</title>
</head>
<body>
<h1>Learn Docker With Us</h1>
</body>
</html>
次に、ブラウザで Server-IP:8080/docker.html を指定します (Server-IP はホストのパブリック 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 つの記事シリーズをすでに取り上げています。
- Docker をインストールし、CentOS と RHEL での基本的なコンテナ操作を学習する
- CentOS/RHEL 上の Docker コンテナにアプリケーションをデプロイして実行する方法
- CentOS/RHEL 上の Dockerfile を使用して Docker イメージを自動的に構築および構成する
- Docker イメージ、コンテナー、およびボリュームを削除する方法
これを出発点として考えてください。ご質問やコメントがございましたら、お知らせください。ご連絡をお待ちしております。