😀

【Docker】最小限の仕様確認

2024/10/12に公開

運用でAWSを触る機会はあるものの、自力で構築した経験がない、もしくは今後AWS上でECR・ECSを利用した構成を構築したいという方向けの「基礎練」です。私的には、基礎ができていないと、何をしても同じポイントでつまづくと考えています。そこを潰すために、Dockerについて、最小限の仕様確認を行っていきます。

下記の最終目標を見て、今回の目標を達成したいと思います。
最終目標:AWSのECR・ECSを利用し、CI/CDを構築でき、標準的なデプロイ環境が構築できる。
今回の目標:ECR・ECSはコンテナのimageを利用するため、Dockerからimageを作成し、ECRへpushできる状態を目指す。

今回の目標の達成のために、下記の【前提】から、目的・方針・手段の順で、Dockerfileなどのファイル作成、コマンド実行を経て、仕様を把握していきます。

【前提】Dockerがinstall済

docker --version

でバージョン表記が出る状態で、下記以下を実行し、最小限の仕様把握を行っていきます。

【目的】ローカルでDockerを走らせる。→ build → imageを作成

【方針】DockerFileを作成し、シンプルなコンテナを立ち上げる。

【手段】chatGPTへ質問

DockerFileを作成し、シンプルなコンテナを立ち上げたいです。サンプルを

下記のディレクトリ構成で、さらに下のコードを記述し、「Docker_first」ディレクトリを作成。

Dockerfile

# ベースイメージとしてPython 3.8を使用
FROM python:3.8-slim

# 作業ディレクトリを指定
WORKDIR /app

# ローカルの現在のディレクトリのファイルをコンテナ内にコピー
COPY . /app

# 必要なパッケージをインストール
RUN pip install --no-cache-dir -r requirements.txt

# コンテナが起動する際に実行されるコマンド
CMD ["python", "app.py"]

app.py

print("Hello, Docker!")

requirement.txt(空のファイル)

touch requirement.txt

作成後、下記のコマンドでbuildし、imageを作成。

docker build -t my-python-app .

下記のコマンドで、imageが作成できているか、確認。

docker images

my-python-appという名前のイメージを確認したら、コンテナを起動する。

docker run my-python-app

Hello, Docker!を確認後、下記で終了したコンテナを確認。

docker ps -a

ここで、下記(一部省略)を確認。

IMAGE           COMMAND                   CREATED          STATUS 
my-python-app   "python app.py"           10 seconds ago   Exited (0) 10 seconds ago

my-python-app "python app.py" からDockerfile内のコマンドが実行され、
Exited (0) 10 seconds agoから終了したことを確認できました。
10秒前に終了していることから、「Hello, Docker!」の表示の後、コンテナが終了していることがわかりました。仕様として、コンテナはずっと立ち上がっているのではなく、利用時に立ち上がり、処理が終わった後終了することを確認できました。

Discussion