本記事ではDockerで実際にコンテナを作成し、ゲストOSやWebサーバーを導入する方法まで具体的に解説します。Dockerで実際に環境構築する手順を理解できるでしょう。
Dockerでどのように環境構築していくのか知りたい方はぜひ参考にしてみて下さい。
Dockerはどういう時に使うのが最適か?
Dockerを使うときに最適な場面は下記の通りです。
- 開発環境の統一が必要なとき
- 本番環境と開発環境の違いが原因でエラーが出るとき
- マイクロサービスを導入しているとき
- 新しい技術やツールを迅速にテストしたいとき
- 依存関係の複雑なプロジェクトを管理するとき
開発環境の統一が必要なとき
開発プロジェクトでは、チームメンバーがそれぞれ異なるPCやOSを使っている場合が多くあります。たとえばWindowsやmacOSなどで環境が異なる状況では、「AさんのPCでは動作するのに、BさんのPCでは動作しない」といった問題がよく発生します。
これらの問題は多くの場合、各マシンの設定やライブラリのバージョンの違いが原因です。
Dockerを導入すると全ての開発者が同じDockerイメージを使って作業できるため、完全に同じ開発環境を再現できます。これによりライブラリや依存関係のバージョン違いによる不具合がなくなり、「動くはずなのに動かない」というトラブルを解消できるのです。
本番環境と開発環境の違いが原因でエラーが出るとき
ソフトウェア開発では開発環境では正常に動いていたのに、本番環境にデプロイした途端にエラーが発生することがよくあります。開発者のPCでは動作していた機能が、本番サーバー上では動かないといったケースがその一例です。これはOSや設定やライブラリのバージョンの違いが原因です。
Dockerを使うことで開発環境と本番環境を同一の設定にすることが可能。アプリケーションをDockerコンテナとしてパッケージ化し、そのまま本番環境にデプロイすれば開発環境と同じ条件で動作します。
マイクロサービスを導入しているとき
近年、多くの企業がマイクロサービスアーキテクチャを導入しています。これは大規模なアプリケーションを複数の小さな独立したサービスに分ける手法です。
しかし各サービスを個別に管理するのは容易ではありません。認証やデータベース、バックエンドAPIなどそれぞれ独立したコンポーネントが互いに連携して動作するため、メンテナンスやスケールに時間がかかることがあります。
Dockerを使うことで各サービスを独立したコンテナとしてデプロイし、必要に応じて個別にスケールさせたりメンテナンスしたりできます。これにより特定のサービスだけを再起動するなどの柔軟に対応でき、システム全体の安定性が向上するのです。
新しい技術やツールを迅速にテストしたいとき
開発現場では新しいフレームワークやツールを試したい場面が多くあります。しかし既存の環境に影響を与えるのはリスクが伴います。特に検証のために一時的な環境が必要な場合、環境の構築と整備に時間を要するでしょう。
Dockerを利用すれば、使い捨てのテスト環境を迅速に構築できます。必要がなくなったらコンテナを削除するだけでクリーンな状態に戻せるため、新しい技術の検証が安全かつ効率的に行えるのが魅力です。
依存関係の複雑なプロジェクトを管理するとき
プロジェクトが複数のライブラリやツールに依存している場合、それぞれの依存関係を適切に管理するのは大変です。異なるバージョンが必要な場合、開発環境が汚れてしまう問題も発生しがちです。
Dockerコンテナ内に依存関係を閉じ込めることで、ホストマシンを汚さずに効率的にプロジェクトを管理できます。PythonやNode.jsのプロジェクトでもDockerfileを活用すれば再現性のある環境が簡単に構築でき、チーム全体で同じ環境を共有することが可能です。
Dockerを使う前に
Dockerで開発環境を構築する際によく使うのがDocker Hubです。Docker Hubはインターネット上で必要なソフトウェアを簡単に手に入れられる、Docker公式のイメージ置き場です。
たとえば「hello-world」や「Apache」、「mysql」などのイメージはもちろん、さまざまな用途に対応したイメージが揃っています。
信頼性の高いイメージや開発者コミュニティが公開したカスタムイメージまで、誰でも自由に検索してダウンロードできるのが特徴。サーバー環境のセットアップやアプリケーションの導入が手間なく素早く行えるため、開発者にとっては強力なツールです。
Docker HubはDockerを使う際に必須ともいえるサービスなので、その役割を事前に確認しておくことがおすすめです。
Dockerの使い方
Dockerの使い方を下記の手順ごとに解説します。
- Dockerが動いているかテストする
- DockerにUbuntuをインストールする方法
- Ubuntuコンテナを起動してApacheをインストールする方法
- Vimを使ってHTMLとCSSを編集する方法
- Dockerfileを使用してUbuntu + Apacheのコンテナを構築する方法
Dockerが動いているかテストする
dockerデスクトップを開き、コマンドプロンプトで下記を実行する
docker version
dockerデスクトップを開き、コマンドプロンプトで下記を実行する
docker run hello-world
「docker run hello-world」というコマンドを実行す売ることにより、Dockerへ下記の手順で指示が送られます。
- Docker Hubから
hello-world
イメージを探す:Dockerは、ローカルにhello-world
という名前のDockerイメージがあるかどうかを確認します。見つからない場合、Docker Hub(公式のDockerイメージのリポジトリ)から最新のhello-world
イメージを自動的にダウンロードします。 - コンテナを起動:
hello-world
イメージから新しいコンテナを作成し、そのコンテナ内でプログラムを実行します。 - メッセージを表示:コンテナ内の
hello-world
プログラムが実行されると、次のようなメッセージが表示されます。
上記のように「Docker run イメージ名」のコマンドを実行することで指定したイメージをもとにコンテナを作成し、その中でプログラムを実行できるのが特徴です。
コマンドプロンプトで実行した内容は、上記のようにDockerの画面で表示されます。
DockerにUbuntuをインストールする方法
Dockerが動いていることを確認したら、実際にゲストOSを導入することから始めましょう。まずはDocker Hubを活用してUbuntuをインストールします。
docker pull ubuntu:latest
上記はDocker Hubから最新のUbuntuイメージをダウンロードするためのコマンドです。dockerはDockerの実行でpullはイメージの取得、ubuntuはダウンロードするイメージの名前、latestは最新バージョンを指定しています。
上記の画面が標示されるので「許可」をクリックして完了です。
Ubuntuコンテナを起動してApacheをインストールする方法
つぎに、UbuntsコンテナへApacheをインストールすることで、Webサービスを公開できる環境を作ります。下記のコマンドを実行して下さい。docker run -d -p 8080:80 --name my_apache_container ubuntu:latest bash -c "apt update && apt install -y apache2 && service apache2 start && tail -f /dev/null"
各コマンドの意味を下記にまとめました。
- docker run:Dockerコンテナを起動するコマンドです。
- -d:コンテナをバックグラウンド(デタッチドモード)で実行します。これにより、コンテナはバックグラウンドで動作し、ターミナルは占有されません。
-
-p 8080:80:ホストのポート8080を、コンテナのポート80にマッピングします。これによりホストマシンの
http://localhost:8080
からコンテナ内のポート80にアクセスできます。 - --name my_apache_container:起動するコンテナに名前を付けます。
- ubuntu:latest:Docker Hubから最新のUbuntuイメージを使ってコンテナを起動します。
- bash -c:シェル(bash)を起動し、後に続くコマンドを一度に実行するためのオプションです。
- apt update:パッケージリストを最新に更新。
- apt install -y apache2:Apache(Webサーバー)をインストール。
- service apache2 start:Apacheを起動。
- tail -f /dev/null:コンテナが終了しないように待機。
上記のコマンドを実行したあと、作成したポート「http://localhost:8080」へアクセスしましょう。
上記の画面が標示されればApacheのインストール完了です。
Vimを使ってHTMLとCSSを編集する方法
UbuntuへApacheをインストールした後は、ブラウザで表示する画面を編集してみましょう。
今回はVim(ヴィム) を使ってHTMLとCSSを反映させてみます。Vimとはコマンドを使い、プログラムやテキスト情報を編集できる高機能テキストエディタです。
既存のApacheコンテナにへVimをインストールし、編集画面を表示するまでの手順は下記の通りです。
上記の手順でコマンドを実行することで、下記のようにUbuntuで表示されたトップ画面のコードが表示されます。
こちらにVimを使って編集した内容が、先ほどブラウザで表示したページに反映されます。
Vimを使って既存のHTMLを削除し、新しいHTML・CSSを張り付ける手順は下記の通りです。
今回は上記の手順で下記のコードを貼り付けました。
HTML・CSSコード
<title>Dockerサイトへようこそ</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Arial', sans-serif;
background-color: #f5f5f5;
color: #333;
line-height: 1.6;
}
header {
background-color: #007bff;
color: #fff;
padding: 20px;
text-align: center;
}
nav {
display: flex;
justify-content: center;
background-color: #0056b3;
}
nav a {
color: #fff;
padding: 15px;
text-decoration: none;
transition: background-color 0.3s ease;
}
nav a:hover {
background-color: #003f7f;
}
.container {
max-width: 1000px;
margin: 30px auto;
padding: 20px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
h1 {
text-align: center;
margin-bottom: 20px;
color: #007bff;
}
h2 {
color: #0056b3;
margin-bottom: 10px;
}
p {
margin-bottom: 20px;
}
.button {
display: inline-block;
padding: 10px 20px;
background-color: #007bff;
color: #fff;
text-align: center;
border-radius: 5px;
text-decoration: none;
transition: background-color 0.3s ease;
}
.button:hover {
background-color: #0056b3;
}
footer {
text-align: center;
padding: 15px;
background-color: #0056b3;
color: #fff;
position: fixed;
bottom: 0;
width: 100%;
}
@media (max-width: 768px) {
nav {
flex-direction: column;
}
.container {
padding: 10px;
}
}
</style>
<header>
<h1>Docker内のWebサイトへようこそ!</h1>
</header>
<nav>
<a href="#">ホーム</a>
<a href="#">会社情報</a>
<a href="#">サービス</a>
<a href="#">お問い合わせ</a>
</nav>
<div class="container">
<h2>このサイトについて</h2>
<p>このWebページは、Dockerコンテナ内でApacheを利用してホストされています。HTMLとCSSを使ったシンプルなウェブサイトのサンプルです。</p>
<h2>Dockerの利点</h2>
<p>Dockerを利用すると、アプリケーションをコンテナとしてデプロイでき、環境の一貫性を保ちながら、開発・本番環境の管理が簡単になります。</p>
<a href="#" class="button">詳しくはこちら</a>
</div>
<footer>
© 2024 Dockerウェブサイト
</footer>
再度先ほどのポート「http://localhost:8080/」へアクセスした結果が下記の通りです。
このようにWebサーバーを用いてブラウザへコンテンツを表示することが可能です。
Dockerfileを使用してUbuntu + Apacheのコンテナを構築する方法
Dockerfileを作成することで、docker run
コマンドを使わずにUbuntu + Apacheの環境を自動的に構築できます。Dockerfileを使えば再現性のある環境を簡単に作成でき、他の開発者やチームメンバーとも共有しやすくなるのが魅力です。
Dockerfileを作成してコンテナを構築する方法までの手順は下記の通りです。
上記の手順でDockerfileを使用してUbuntu + Apacheの環境を構築することで、再現性のある開発環境を簡単に作成できます。これにより複数の開発者やチームメンバーが同じ環境でプロジェクトを進めることや、本番環境へのデプロイも容易です。
また、手動でのセットアップ作業を自動化することで効率的に作業を進めるこ都も可能。環境構築にかかる時間を大幅に短縮できます。
Dockerの使い方に関するよくある質問
Dockerはお金がかかるの?
Docker自体は基本的に無料で利用できます。しかし商用利用や大規模な運用環境向けに追加の機能や、サポートを提供する有料プランもあります。
Dockerは無料ですか?
はい、Dockerの多くの機能は無料で提供されています。Docker Desktop(Windows、macOS用)も個人利用や中小企業向けに無料で利用可能です。ただし大企業(従業員250人以上、売上1,000万ドル以上)に該当する場合は、有料プランに移行する必要があります。
Dockerを無料で利用できる条件は?
以下の条件に該当する場合、Dockerを無料で利用できます。
- 個人利用の場合
- 教育機関や非営利団体としての利用
- 中小企業(従業員250人未満、年間売上1,000万ドル未満)での利用
- オープンソースプロジェクトに使用する場合
ただしDocker Desktopの商用利用において、上記の基準を超える企業は有料の「Docker Business」または「Docker Team」プランが必要です。