如何本地Docker部署到AWS EC2
如何在AWS EC2上使用Docker:從創建實例到運行容器

Hi, I'm Sharon
本文涵蓋了使用AWS EC2和Docker的完整流程,包括創建EC2實例、設定預算警報、連接EC2、設定安全組、在EC2上運行Docker、推送及拉取Docker Image、創建專案資料夾、傳送.yaml檔案至EC2,以及使用.yaml檔案運行Docker Image。最後還介紹了下次開啟EC2並運行Docker的檢查清單。
運行AWS EC2
創建EC2、設定預算警報
Create instance
輸入名稱、選擇ubuntu為作業系統

創建密鑰並儲存至本機上,SSH本地端連線到EC2時會使用到

創建安全組,控制流量進出、減少資安風險

創建後會自動啟動EC2 Instance
設定預算避免不小心花太多錢

使用本地終端機連接EC2
使用軟體: MobaXterm
設定
remote → aws ec2 instance 公有IP
Specify username → ubuntu
Use private key → .pem密鑰檔案位置

成功

安全組設定
找到當前EC2 instance 安全組Security group

編輯入站規則,點擊右上方的編輯入站規則(允許哪些協議的流量可訪問到網站中)

入站規則設定→只開放SSH特定IP

EC2上運行Docker
常用指令
查詢當前鏡像
docker images查看運行中的容器
docker ps查看運行中的容器並包含停止運行的
docker ps -a刪除鏡像
docker rm <容器ID名>
安裝Docker
按照官方文檔中的12點複製命令依序安裝
https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
第3點使用nginx測試
測試
安裝docker化的nginx,來確認可否連入
docker run -d -p 80:80 --name webserver nginx網址輸入http://aws 公有ip 地址
http://13.213.7.170
確認是否有看到nginx歡迎頁面
本地Docker image推送到Docker Hub
從Docker Hub拉取Image
拉取先前上傳的Hub

一樣用nginx示範,後續使用.yaml運行
docker pull ppp300a/nginx:v1.0
Ubuntu上創建專案資料夾
Ubuntu常用命令
查看當前路徑
pwd創建資料夾
mkdir 目錄名創建多個資料夾
mkdir -p 父層級/子層級到多層資料夾下
cd /home/ubuntu/projects/test_web到上一層資料夾層級
cd ..列出當前目錄下的文件和文件夾
ls編輯文件(使用 nano 編輯器)
nano 文件名刪除文件
rm 文件名刪除目錄及其內容
rm -r 目錄名複製文件或目錄
cp 源文件 目標位置移動或重命名文件或目錄
mv 源文件 目標位置
流程
輸入
pwd確認當前路徑創建project/test_web
mkdir -p /home/ubuntu/projects/test_web進到test_web中
cd /home/ubuntu/projects/test_web
從本機傳.yaml檔案到AWS EC2中
透過SSH傳送資料
Git bash
使用軟體: git bash
命令:
scp -i /path/to/your-key.pem /path/to/local/docker-compose.prod.yml ec2-user@your-ec2-ip-address:/path/to/remote/directory/
私鑰文件的路徑:
/path/to/your-key.pem本地文件路徑:
/path/to/lo**cal/docker-compose.prod.ymlEC2 主機的使用者和IP地址:
ec2-user@your-ec2-ip-addressEC2上的目標路徑:
/path/to/remote/directory/完整如下:
scp -i "C:\Users\SharonMai\.ssh\dept.pem" ./新文字文件.txt ubuntu@ec2-3-1-20-80.ap-southeast-1.compute.amazonaws.com:/home/ubuntu/projects/test_web
Moba拖拉
直接拖拉

使用.yaml檔案運行Image
Docker compose常用命令
指定yml檔案運行
sudo docker compose -f docker-compose-build.yml up停止所有由
docker-compose up啟動的容器sudo docker compose stop刪除所有透過
docker-compose.yml啟動目前已停止運行的容器,不會刪除任何網路(networks)、卷(volumes)或映像檔(images)sudo docker compose rm停止並刪除容器及網路(networks)以及定義在.yml中的服務
sudo docker compose down
運行yml檔,將自動運行此檔名docker-compose.yml
sudo docker-compose up
流程
運行yaml檔案
開新分頁,網址輸入地址http://aws<公有ip> ,完成如下
http://13.213.7.170
下次再開啟AWS EC2 運行Docker的例行公事
啟動EC2

安全組SSH IP更新
找到當前EC2 instance 安全組Security group

編輯入站規則,點擊右上方的編輯入站規則(允許哪些協議的流量可訪問到網站中)

入站規則設定→只開放SSH特定IP

本地終端機連線
remote → aws ec2 instance 公有IP
Specify username → ubuntu
Use private key → .pem密鑰檔案位置

到專案路徑中
輸入
pwd確認當前路徑進到test_web中
cd /home/ubuntu/projects/test_web
啟動.yaml運行yaml檔案
指定yml檔案運行
sudo docker compose -f docker-compose-build.yml up



