Docker Desktopの使い方。UbuntuとApacheでWebページを表示する方法を例に解説

Docker Desktopの使い方。UbuntuとApacheでWebページを表示する方法を例に解説

公開: 更新:

本記事ではDockerで実際にコンテナを作成し、ゲストOSやWebサーバーを導入する方法まで具体的に解説します。Dockerで実際に環境構築する手順を理解できるでしょう。

【2024年版】Dockerのインストール方法(Windows)を手順ごとに詳しく解説
【2024年版】Dockerのインストール方法(Windows)を手順ごとに詳しく解説

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の使い方を下記の手順ごとに解説します。

  1. Dockerが動いているかテストする
  2. DockerにUbuntuをインストールする方法
  3. Ubuntuコンテナを起動してApacheをインストールする方法
  4. Vimを使ってHTMLとCSSを編集する方法
  5. Dockerfileを使用してUbuntu + Apacheのコンテナを構築する方法

Dockerが動いているかテストする

dockerデスクトップを開き、コマンドプロンプトで下記を実行する

docker version
Dockerが動いているかテストする

dockerデスクトップを開き、コマンドプロンプトで下記を実行する

docker run hello-world
Dockerが動いているかテストする

「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の画面で表示されます。

DockerにUbuntuをインストールする方法

Dockerが動いていることを確認したら、実際にゲストOSを導入することから始めましょう。まずはDocker Hubを活用してUbuntuをインストールします。

docker pull ubuntu:latest
Dockerが動いているかテストする

上記はDocker Hubから最新のUbuntuイメージをダウンロードするためのコマンドです。dockerはDockerの実行でpullはイメージの取得、ubuntuはダウンロードするイメージの名前、latestは最新バージョンを指定しています。

Dockerが動いているかテストする

上記の画面が標示されるので「許可」をクリックして完了です。

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」へアクセスしましょう。

Dockerが動いているかテストする

上記の画面が標示されればApacheのインストール完了です。

Vimを使ってHTMLとCSSを編集する方法

UbuntuへApacheをインストールした後は、ブラウザで表示する画面を編集してみましょう。

今回はVim(ヴィム) を使ってHTMLとCSSを反映させてみます。Vimとはコマンドを使い、プログラムやテキスト情報を編集できる高機能テキストエディタです。

既存のApacheコンテナにへVimをインストールし、編集画面を表示するまでの手順は下記の通りです。

STEP
1

Dockerで作成したコンテナへシェルアクセスする

docker exec -it my_apache_container bash
STEP
2

apt updateとVimをインストールする

apt-get update
apt-get install -y vim
STEP
3

Vimでindex.htmlを編集する

vi /var/www/html/index.html

上記の手順でコマンドを実行することで、下記のようにUbuntuで表示されたトップ画面のコードが表示されます。

Vimを使ってHTMLとCSSを編集してみる

こちらにVimを使って編集した内容が、先ほどブラウザで表示したページに反映されます。

Vimを使って既存のHTMLを削除し、新しいHTML・CSSを張り付ける手順は下記の通りです。

STEP
1

挿入モードに切り替えて全削除

iキーを押して挿入モードに切り替えます。画面左下に -- INSERT -- と表示されたら「Esc」キーを押して通常モードに戻りましょう。そのあとは以下のコマンドを順番に入力し、全てのテキストを削除します。
  1. gg: ファイルの先頭に移動する
  2. d: 削除コマンドを実行
  3. G: ファイルの最後に移動する
STEP
2

コピーしたHTMLを貼り付け

挿入モードに戻るために、再度 i を押します。システムのクリップボードから内容を貼り付けるには、以下のショートカットを使用してください。
  • Linux: Ctrl + Shift + V
  • Mac: Cmd + V
  • Windows (WSL): Ctrl + Shift + V
STEP
3

挿入モードを終了して保存

「Esc」キーを押して挿入モードを終了し、通常モードに戻ります。そのあと以下のコマンドを入力してファイルを保存し、Vimを終了します。
:wq
STEP
4

編集したファイルの確認

保存が完了したらブラウザで index.html を開き、編集が正しく反映されているか確認してください。

今回は上記の手順で下記のコードを貼り付けました。

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/」へアクセスした結果が下記の通りです。

Dockerが動いているかテストする

このようにWebサーバーを用いてブラウザへコンテンツを表示することが可能です。

Dockerfileを使用してUbuntu + Apacheのコンテナを構築する方法

Dockerfileを作成することで、docker runコマンドを使わずにUbuntu + Apacheの環境を自動的に構築できます。Dockerfileを使えば再現性のある環境を簡単に作成でき、他の開発者やチームメンバーとも共有しやすくなるのが魅力です。

Dockerfileを作成してコンテナを構築する方法までの手順は下記の通りです。

STEP
1

Dockerfileを作成する

「Dockerfile」というファイルを作成し、以下の内容を記載して保存します。

FROM ubuntu:latest
RUN apt update && \
    apt install -y apache2 && \
    apt clean
CMD ["apache2ctl", "-D", "FOREGROUND"]
EXPOSE 80
            
STEP
2

Dockerイメージをビルドする

以下のコマンドを実行して、Dockerイメージをビルドします。

docker build -t ubuntu-apache-new .
STEP
3

エラーが出た場合、ファイル名を変更する

もしエラーが発生した場合、以下のコマンドでファイルの拡張子を削除してください。

ren Dockerfile.txt Dockerfile
STEP
4

再度Dockerイメージをビルドする

再度、以下のコマンドを実行してDockerイメージをビルドします。

docker build -t ubuntu-apache-new .
STEP
5

コンテナを起動する

作成したDockerイメージを使用して、コンテナを起動します。

docker run -d -p 8081:80 --name apache_container_new ubuntu-apache-new

上記の手順で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」プランが必要です。

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する