Dockerの学習を始めました。
まだ全体の流れがイメージできていない、メモのような内容です。
間違っているところがあるかもしれませんし、
読みづらい記事になっているかと思います。。。
理解が深まり次第、その都度、更新・訂正します!
(間違いのご指摘や、アドバイスいただければとても嬉しいです!)
《目的》
- Dockerの理解
- docker-composeの理解
- コンテナオーケストレーションツール(AWS ECS)の理解
1-1 Dockerの構成要素
以下は、Docker hubからcentosのイメージをダウンロードして、さらにcurlの機能を搭載してカスタムしたDockerimageをDocker hubにプッシュする際の図。
- Docker Client:Docker Daemonに命令を出す。それぞれは通常同じサーバーにあるが、違うところにある場合もあり。
- Docker Daemon:コンテナに変更を加えたり、変更後のDocker imageを保存したり、Docker imageを管理している。DockerFileを元にビルドする。Dockerhub等のDocker imageの保管場所であるレジストリと通信してPUSHやPULLをする。
1-2 EC2(Amazon Linux2023)にセットアップ
EC2上にDockerをインストールし、
Docker Compose(アプリケーションの構成や複数のコンテナを管理するためのツール)もセットアップ、
最終的には、gitで取得したアプリケーションをDockerを使用して起動するスクリプト。
各コマンドの説明。
# Dockerに関するセットアップ
sudo yum update -y && \
#Dockerのパッケージをダウンロードしてくる
sudo yum install -y docker && \
# ec2-userを-G docker に所属させる
sudo usermod -a -G docker ec2-user && \
# Dockerを起動する、起動しているかどうかのステータスも表示する
sudo systemctl start docker.service && \
# EC2再起動後もDockerを再起動して
sudo systemctl enable docker.service && \
# 以下はDocker composeに関するセットアップ
# githubのリポジトリからdockercomposeのパッケージをEC2のbinにダウンロード
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose && \
# 以下、EC2のセットアップ&アプリの起動
sudo yum install -y python3-devel gcc jq tree git && \
git clone https://github.com/AWSCLOUDTECH/tutorial.git && \
cd tutorial/todobackend && \
cd src && \
sudo yum install -y pip
pip3 install wheel uwsgi && \
# -rでrequirements.txtに書かれた内容を一括で実行できる
pip3 install -r requirements.txt --user && \
# migrateはデータベースを使用可能にするコマンド
python3 manage.py migrate && \
python3 manage.py runserver 0.0.0.0:8000
上記のコマンド実行にてEC2に直接インストールし、
アプリをEC2上で実行し確認済み。