【Docker】最小限の仕様確認
運用で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