Docker 入門、Dockerのインストール、Dockerの基本操作
【概要】Dockerは実行環境をパッケージとして扱うコンテナ化技術である。イメージを基にコンテナを作成し、各コンテナは独立して動作する。データの永続化にはボリュームを使用し、コンテナ間の通信にはネットワークを使用する。Dockerfileに手順を記述してイメージをビルドでき、レイヤー構造により効率的な管理が可能である。
【この記事で学べること】Dockerの基本概念(コンテナ、イメージ、ボリューム、ネットワーク)、Docker Desktopのインストール方法(Windows、Ubuntu)、コンテナの作成・実行・停止・削除の基本操作、Dockerfileを使用したイメージの作成方法を習得できる。
【目次】
- コンテナ化
- Dockerエンジン
- Dockerイメージ
- イメージのレイヤー構造
- Dockerfile
- Dockerコンテナ
- Dockerボリューム
- Dockerネットワーク
- Docker Desktopのインストール、Dockerエンジンの起動(Windows上)
- Docker Desktopのインストール、Dockerエンジンの起動(Ubuntu上)
- Dockerの基本操作
【サイト内の関連ページ】
1. コンテナ化
コンテナ化(Containerization)は、アプリケーションとその実行環境(ライブラリ、設定ファイルなど)を単一のパッケージとして統合し、異なる環境でも一貫した動作を保証する技術である。Dockerによるコンテナ化には、以下の利点がある。
- 実行環境の一貫性:異なる環境間での動作の差異を解消し、安定した実行環境を実現する
- アプリケーションの分離:各コンテナで異なるバージョンのライブラリやフレームワークを独立して使用でき、バージョン依存の問題を解決する
- 環境間の移植性:OS、クラウド環境など、多様な実行環境において同一の動作を実現する
- システムリソースの効率性:仮想マシン(Virtual Machine:VM)と比較して、メモリ使用量とディスク使用量を削減する
2. Dockerエンジン
Dockerエンジン(Docker Engine)は、Dockerコンテナの作成と実行を管理するソフトウェア基盤である。Dockerエンジンは、以下の2つの要素で構成される。
- Dockerデーモン(dockerd):コンテナのライフサイクル全体を管理するサーバープロセス
- Dockerクライアント(docker CLI):ユーザーのコマンドをDockerデーモンに伝達するコマンドラインインターフェース
3. Dockerイメージ
Dockerイメージとは、アプリケーションの実行環境を定義したパッケージであり、実行に必要なすべてのコンポーネント(ファイル、ライブラリ、依存関係)を含む。このイメージは、Dockerコンテナを生成するためのテンプレートとして機能する。
Dockerイメージのプル(取得)
docker pullコマンドは、Docker Hub(Dockerの公式イメージレジストリ)などから指定したイメージをダウンロードする。イメージを取得することで、そのイメージを基にコンテナを作成できるようになる。
次は、Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得する例である。docker imagesコマンドにより、ローカル(手元のコンピュータ)に保存されているDockerイメージの一覧を表示する。
docker pull ubuntu:24.04
docker images
Dockerイメージのビルド(Dockerfileからのイメージ作成)
docker buildコマンドは、カレントディレクトリ(現在の作業ディレクトリ)のDockerfileを基にイメージを生成する。生成したイメージには、識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる。
docker build -t myubuntu2404:1.0 .
docker images
Dockerイメージの一覧表示
docker imagesコマンドにより、ローカルに保存されているDockerイメージの一覧を表示する。表示される情報には、各イメージのリポジトリ名、タグ、イメージID、作成日時、サイズが含まれる。イメージの詳細な構成情報を確認するには、docker image inspectコマンドにイメージIDを指定して実行する。
docker images
4. イメージのレイヤー構造
Dockerイメージは、複数のレイヤー(層)によって階層的に構成される。各レイヤーは、Dockerfileの個々のコマンド(FROM、RUN、COPYなど)の実行結果として生成される。
以下に、レイヤーが段階的に生成される具体例を示す。
FROM ubuntu:24.04 # ベースイメージのレイヤー
COPY ./app /app # アプリケーションファイルのレイヤー
# システムパッケージのインストールのレイヤー
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential
# Miniconda3のインストールのレイヤー
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成のレイヤー
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
レイヤー構造には、以下の利点がある。
- ビルド時間の短縮:各レイヤーはビルド時にキャッシュされ、変更がないレイヤーは再利用される
- ストレージの効率化:各レイヤーは前のレイヤーからの差分情報のみを保存するため、ディスク使用量を削減できる
5. Dockerfile
Dockerfileは、Dockerイメージを作成するための手順を定義したテキストファイルである。ベースイメージの選択、実行コマンドの設定、ファイルのコピー指示、その他の構築手順を記述する。Dockerfileを使用することで、イメージの作成手順を再現可能な形で管理できる。
以下に、Dockerfileの構成例を示す。
次のDockerfileは、Ubuntu 24.04 LTSのイメージを基にPython環境を構築する。Miniconda3を用いてPython 3.12環境を作成し、NumPy、Pandas等の科学技術計算ライブラリを導入する。Jupyter Notebookをポート8888で起動するよう設定し、開発用ツールとしてcmake、git等も導入する。
FROM ubuntu:24.04
# 環境変数の設定
ENV PATH=/opt/conda/bin:$PATH \
SHELL=/bin/bash \
DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Tokyo
# システムパッケージのインストール
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential
# Miniconda3のインストール
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \
/opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \
echo "conda activate dev" >> /root/.bashrc
# Jupyterの設定
RUN mkdir -p /root/.jupyter && \
/opt/conda/envs/dev/bin/jupyter notebook --generate-config && \
echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
# 作業ディレクトリの設定
WORKDIR /workspace
# Jupyterのポートを公開
EXPOSE 8888
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
6. Dockerコンテナ
Dockerコンテナは、Dockerイメージから生成される独立した実行環境である。各コンテナは、他のコンテナやホストシステムから分離され、独自のプロセス空間、ネットワーク環境、ファイルシステムを持つ。
コンテナの作成と実行
次のコマンドは、Ubuntu 24.04 LTSイメージを基に新しいコンテナを作成し、cat /etc/os-releaseコマンドを実行した後、自動的にコンテナを削除する。--rmオプションを指定することで、一時的な作業用コンテナが残らず、ディスク容量を節約できる。
docker run --rm ubuntu:24.04 cat /etc/os-release
次のコマンドは、Ubuntu 24.04 LTSのイメージを基に新しいコンテナを作成して実行する。-itオプションにより対話的な操作が可能になり、--nameオプションでコンテナに識別名を付与する。exitコマンドで接続を終了すると、コンテナは停止する。--rmオプションが指定されていないため、コンテナは停止後も保持される。
docker run --name ubuntu -it ubuntu:24.04 /bin/bash
exit
停止中のコンテナへの接続
docker startコマンドにより、停止中のコンテナを実行状態にする。docker execコマンドにより、実行中のコンテナに新しいプロセスとして接続する。exitコマンドで接続を終了しても、コンテナは停止せずに実行を継続する。
docker start ubuntu && docker exec -it ubuntu /bin/bash
exit
コンテナの一覧表示
docker psコマンドにより、コンテナの状態を確認できる。-aオプションを指定すると、停止中のコンテナも含めて表示する。
docker ps -a
7. Dockerボリューム
Dockerボリュームは、コンテナのライフサイクル(作成から削除まで)から独立してデータを永続的に保持する機能である。コンテナを削除してもボリューム内のデータは保持されるため、データベースファイルや設定ファイルなどの永続化に適している。また、複数のコンテナ間でボリュームを共有することで、コンテナ間でのデータ共有を実現する。
ボリュームの操作
# データ永続化用のボリュームを作成
docker volume create app-data
# 作成したボリュームをマウントしてコンテナを起動
docker run --rm -v app-data:/data ubuntu:24.04 ls -al /data
8. Dockerネットワーク
Dockerネットワークは、コンテナ間の通信を管理する機能である。複数のコンテナ間の通信や、コンテナとホストシステム間の通信を実現する。
ネットワークの種類
- bridgeネットワーク:標準のネットワークドライバであり、同一ホスト上のコンテナ間通信を実現する
- hostネットワーク:ホストシステムのネットワークスタックを直接使用する
- noneネットワーク:ネットワーク機能を無効化する
- overlayネットワーク:複数のDockerホスト間でのコンテナ通信を実現する
9. Docker Desktopのインストール、Dockerエンジンの起動(Windows上)
Docker Desktopにより、GUIを用いてDockerコンテナ、Dockerイメージ、Dockerボリュームの一覧表示、状態確認、基本的な操作を行うことができる。
Docker Desktopは、Windowsのスタートメニューから起動できる。Docker Desktopを起動すると、Dockerエンジンが起動する。
9.1 インストール
Dockerデーモンとクライアントを含むDocker Desktopのインストール手順を示す。
インストールは、以下の2つの方法から選択できる。
A)winget(Windowsパッケージマネージャー)を使用したインストール
- Windowsで、管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」)。 - wingetが利用可能か確認する。
winget --version
- Docker Desktopをインストールする。
winget install --scope machine Docker.DockerDesktop
B)手動でのインストール
- Docker Desktopのダウンロード
- 公式サイト(https://docs.docker.com/desktop/features/wsl/#download)にアクセスする
- インストーラをダウンロードする
- インストールの実行
- ダウンロードしたインストーラを実行する
- 画面の指示に従ってインストールを完了する
- 自動起動の設定(任意)
Windows起動時にDocker Desktopを自動的に起動したい場合は、以下の設定を行う。
管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー >
cmdと入力 > 右クリック > 「管理者として実行」)。次のコマンドを実行する。
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "Docker Desktop" /t REG_SZ /d "\"C:\Program Files\Docker\Docker\Docker Desktop.exe\"" /f
10. Docker Desktopのインストール、Dockerエンジンの起動(Ubuntu上)
10.1 事前準備:既存のDockerの削除(必要な場合)
Docker Desktopとの競合を防ぐため、既存のdocker-ceやdocker.ioがインストールされている場合は削除する。
sudo apt remove -y docker docker-engine docker.io containerd runc docker-ce docker-ce-cli
rm -r $HOME/.docker
sudo rm -f /usr/local/bin/com.docker.cli
sudo apt purge -y docker-desktop
10.2 HTTPSリポジトリ利用の設定
aptがHTTPSでリポジトリにアクセスできるようにするため、必要なパッケージをインストールする。
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
10.3 Docker公式リポジトリの追加
Dockerの公式GPGキー(パッケージの署名を検証するための暗号鍵)を追加し、Docker公式リポジトリを登録する。
参考ページ: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
10.4 Docker Engineのインストール
sudo apt update
sudo apt -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
10.5 Docker Engineの動作確認
以下のコマンドを実行し、エラーメッセージが表示されないことを確認する。
sudo docker run hello-world
10.6 権限の設定と動作確認
現在のユーザーをdockerグループに追加することで、sudoなしでDockerコマンドを実行できるようになる。グループへの追加後は、一度ログアウトして再ログインする必要がある。
sudo usermod -aG docker $USER
docker run hello-world
docker --version
docker version
docker compose version
10.7 Docker Desktopのインストール
参考ページ: https://docs.docker.com/desktop/setup/install/linux/ubuntu/
curl -LO https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb
sudo apt install -y ./docker-desktop-amd64.deb
10.8 Docker Desktopの起動と動作確認
以下のコマンドでDocker Desktopを起動する。
docker desktop version
docker desktop start
10.9 Docker Engineの自動起動設定
システム起動時にDocker Engineを自動的に起動するよう設定する。
sudo systemctl unmask docker.service
sudo systemctl enable docker
sudo systemctl is-enabled docker
10.10 トラブルシューティング
docker.service not foundエラーDockerが正しくインストールされていない可能性がある。
docker versionコマンドを実行してインストール状態を確認する。permission deniedエラーsudo usermod -aG docker $USERを実行後、ログアウトして再ログインする。グループの変更は再ログイン後に有効になる。
11. Dockerの基本操作
イメージとコンテナに対するコマンド一覧
イメージ
- Dockerfileからイメージを構築:build <Dockerfileについての指定>
- コンテナからイメージを作成(コミット):commit <コンテナ> <リポジトリ:タグ>
- 一覧表示:images
- 情報取得:inspect <イメージ>
- 読み込み:load
- 保存:save <イメージ>
- イメージの削除:rmi
コンテナ
- 実行開始:run <イメージ>[<コマンド>]
- 停止中のコンテナを実行状態に:start <コンテナ>
- 実行中のコンテナを停止:stop <コンテナ>
- 実行中のコンテナでコマンドを起動:exec <コンテナ>
- 実行中のコンテナを強制終了:kill <コンテナ>
- 一覧表示:ps -a
- ポートマッピングの表示:port <コンテナ>
- コンテナの削除:rm <コンテナ>
イメージからのコンテナの作成、コンテナの開始・停止・削除、ローカルのイメージの確認
- イメージからのコンテナの作成と開始
Ubuntu 24.04 LTSのイメージからコンテナを作成して開始する。
docker run --name myubuntu -p 8888:8888 -it ubuntu:24.04 /bin/bash次の実行画面では、Linuxコマンドのpwd、lsを実行した後、
exitで切断している。
各オプションの説明:
--name myubuntu:コンテナに識別用の名前を付与する-i:標準入力を開いたままにし、対話的な操作を可能にする-t:疑似TTY(仮想端末)を割り当て、コマンドラインでの操作を可能にする-p 8888:8888:ホストのポート8888をコンテナのポート8888にマッピングする(Jupyter Notebook等で使用)ubuntu:24.04:使用するベースイメージ/bin/bash:コンテナ起動時に実行するコマンド
- 停止中のコンテナへの接続
docker startコマンドにより、停止中のコンテナを実行状態にする。docker execコマンドにより、実行中のコンテナに新しいプロセスとして接続する。exitコマンドで接続を終了しても、コンテナは停止せずに実行を継続する。docker start myubuntu && docker exec -it myubuntu /bin/bash exit
- 実行中のmyubuntuコンテナを停止する
docker stop myubuntu
- 停止中のmyubuntuコンテナを実行状態にする
docker start myubuntu
- コンテナの一覧表示(実行中および停止中)
docker ps -a
- 単一コンテナの停止と削除
docker rm -f <コンテナID> - すべてのコンテナの停止と削除(コマンドプロンプト用)
for /f "tokens=*" %i in ('docker ps -a -q') do docker rm -f %i - すべてのコンテナの停止と削除(バッチファイル用)
for /f "tokens=*" %%i in ('docker ps -a -q') do docker rm -f %%i - イメージの一覧表示
docker images
コンテナからイメージを作成
docker commitコマンドを使用すると、現在のコンテナの状態をイメージとして保存できる。手動でインストールや設定を行ったコンテナを、再利用可能なイメージとして保存する場合に有用である。ただし、再現性の観点からは、Dockerfileを使用したイメージ作成が推奨される。
docker commitコマンドにより、コンテナからイメージを作成するコンテナIDは、
docker ps -aで確認する。以下の実行例では、イメージ名としてmyubuntu2404:1.0を指定している。docker ps -a docker commit <コンテナID> myubuntu2404:1.0
- イメージが追加されたことを確認する
docker images
- 作成したイメージを使用してコンテナを作成し、起動する
docker run -it myubuntu2404:1.0 /bin/bash exit
Dockerfileを使用したイメージの生成
Dockerfileを使用することで、イメージの作成手順をコードとして管理でき、同じ環境を何度でも再現できる。チーム開発やCI/CD環境での利用に適している。
- 空のディレクトリを作成する
- そのディレクトリ内に、以下の内容でDockerfileを作成して保存する
次のDockerfileは、Ubuntu 24.04 LTSのイメージを基にPython環境を構築する。Miniconda3を用いてPython 3.12環境を作成し、NumPy、Pandas等の科学技術計算ライブラリを導入する。Jupyter Notebookをポート8888で起動するよう設定し、開発用ツールとしてcmake、git等も導入する。
FROM ubuntu:24.04 # 環境変数の設定 ENV PATH=/opt/conda/bin:$PATH \ SHELL=/bin/bash \ DEBIAN_FRONTEND=noninteractive \ TZ=Asia/Tokyo # システムパッケージのインストール RUN apt-get update && apt-get upgrade -y && \ apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential && \ rm -rf /var/lib/apt/lists/* # Miniconda3のインストール RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \ rm Miniconda3-latest-Linux-x86_64.sh # condaの初期設定とdev環境の作成 RUN /opt/conda/bin/conda init bash && \ echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \ /opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \ echo "conda activate dev" >> /root/.bashrc # Jupyterの設定 RUN mkdir -p /root/.jupyter && \ /opt/conda/envs/dev/bin/jupyter notebook --generate-config && \ echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \ echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \ echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py # 作業ディレクトリの設定 WORKDIR /workspace # Jupyterのポートを公開 EXPOSE 8888 # コンテナ起動時のコマンド CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \ /opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"] - Dockerfileを基にイメージを作成する
docker buildコマンドは、カレントディレクトリのDockerfileを基にイメージを生成する。作成したイメージには、識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる。docker imagesコマンドにより、ローカルに保存されたすべてのイメージを一覧形式で確認できる。docker build -t myubuntu2404:1.0 . docker images - 作成したイメージからコンテナを作成して実行する
docker run --name myubuntu -p 8888:8888 -it myubuntu2404 /bin/bash
未使用リソースの削除
Dockerを使用していると、未使用のイメージやコンテナがディスク容量を消費する。定期的に未使用リソースを削除することで、ディスク容量を確保できる。
- 未使用リソースの一括削除
注意:このコマンドは、停止中のコンテナ、未使用のネットワーク、未使用のイメージをすべて削除する。必要なリソースが削除されないよう、実行前に確認すること。
docker system prune -a - 未使用コンテナの削除
docker container prune - 未使用イメージの削除
docker image prune
リソース管理(Docker Desktopを使用)
Docker Desktopの設定で、WSL 2(Windows Subsystem for Linux 2:Windows上でLinuxを実行するための機能)に割り当てるリソースを管理できる。
メモリ使用量、ディスク容量の設定:Docker Desktop > Settings > Resources > WSL Integration
ローカルフォルダのマウント
ホストのフォルダをコンテナ内にマウントすることで、ホストとコンテナ間でファイルを共有できる。
docker run --rm -v %cd%/windows-file:/app ubuntu:24.04 ls /app
Docker上でサーバを起動し、ポートマッピングを行う(ホストはUbuntu)
- 前準備
sudo apt update - サーバの起動
公式の「はじめよう」のページ(https://docs.docker.com/get-started/)に従い、サーバを起動する。
次の操作では、ホストのポート3000をコンテナのポート80にマッピングしている。ローカルホストからのみアクセス可能にする場合は「127.0.0.1:3000:80」のように指定する。
docker run -d -p 3000:80 docker/getting-started - SSHでリモート接続する
次の操作では、ホストのポート8022をコンテナのポート22にマッピングしている。
docker run -p 8022:22 -it myubuntu2404:1.0 /bin/bash sudo adduser --uid 1234 --ingroup sudo --home /home/ai ai
Docker Composeの「はじめよう」を実行(ホストはUbuntu)
Docker Composeは、複数のコンテナで構成されるアプリケーションを定義・実行するためのツールである。Docker Composeの「はじめよう」のページ(https://docs.docker.com/compose/gettingstarted/)の手順に従って実行する。
- 前準備
Docker Composeがインストールされていること。ここでは、Docker Desktopに同梱されているDocker Composeを使用する。
- プロジェクトディレクトリの作成
mkdir composetest cd composetest - プロジェクトディレクトリにapp.pyを作成する
https://docs.docker.com/compose/gettingstarted/のapp.pyを使用する。
- プロジェクトディレクトリにrequirements.txtを作成する
https://docs.docker.com/compose/gettingstarted/のrequirements.txtを使用する。
- プロジェクトディレクトリにDockerfileを作成する
Dockerイメージの生成に使用する。app.pyが使用するソフトウェア(Python処理系など)が設定されている。
https://docs.docker.com/compose/gettingstarted/のDockerfileを使用する。
- プロジェクトディレクトリにdocker-compose.ymlを作成する
サービスの設定を記述する。
https://docs.docker.com/compose/gettingstarted/のdocker-compose.ymlを使用する。
docker compose upを実行してアプリケーションのビルドと実行を行うエラーメッセージが表示されないことを確認する。
docker compose up- ポート番号8000でWebサーバにアクセスし、結果を確認する
curl http://localhost:8000