๐จ AWS 128: Amazon ECR ์ค์ ๋ฐ Docker ์ด๋ฏธ์ง ํธ์
Source: Dev.to
Hey Cloud Builders ๐
#100DaysOfCloud ์ฑ๋ฆฐ์ง์ Dayโฏ28์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค! ์ด๋ฒ ํฌ์คํธ์์๋ ํ๋ผ์ด๋น Amazon Elastic Container Registry (ECR) ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ , ์ปค์คํ
Python ์ฑ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค, ํด๋น ๋ ์ง์คํธ๋ฆฌ์ ํธ์ํ๋ ๊ณผ์ ์ ๋ค๋ฃน๋๋ค.
Overview
Amazon ECR์ ์์ ๊ด๋ฆฌํ Docker ์ปจํ ์ด๋ ๋ ์ง์คํธ๋ฆฌ๋ก, ๊ฐ๋ฐ์๊ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ์์ ํ๊ฒ ์ ์ฅยท๊ด๋ฆฌยท๋ฐฐํฌํ ์ ์๊ฒ ํด์ค๋๋ค. ํ๋ผ์ด๋น ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ํฐํฉํธ๋ฅผ ๊ณต๊ฐ๋ก๋ถํฐ ์จ๊ธธ ์ ์์ต๋๋ค.
StepโbyโStep Workflow
๋ค์ ๋จ๊ณ ์์๋๋ก ์งํํฉ๋๋ค:
- ์ ์ฅ์ ์์ฑ
- Docker ์ด๋ฏธ์ง ๋น๋
- Docker์ ECR ์ธ์ฆ
- ์ด๋ฏธ์ง ํ๊ทธ ์ง์ ๋ฐ ํธ์
- ์ ๋ก๋ ํ์ธ
Create the Repository
aws ecr create-repository \
--repository-name devops-ecr \
--region us-east-1
Note: ECR ์ ์ฅ์๋ ๋ฆฌ์ ๋ณ๋ก ์กด์ฌํฉ๋๋ค. ์ ์ฅ์๋ฅผ ๋ง๋ค๊ณ ์ ํ๋ ๋ฆฌ์ ๊ณผ ๋์ผํ๊ฒ AWS CLI๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํ์ธ์.
์์ฑ ํ์๋ Repository URI๋ฅผ ํ์ธํฉ๋๋ค. ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
.dkr.ecr..amazonaws.com/devops-ecr
Build the Docker Image
cd /root/pyapp # Directory containing the Dockerfile
docker build -t pyapp . # Build a local image named "pyapp"
Authenticate Docker with ECR
12์๊ฐ ์ ํจํ ๋ก๊ทธ์ธ ํ ํฐ์ ์์ฑํ๊ณ Docker์ ํ์ดํํฉ๋๋ค:
aws ecr get-login-password --region |
docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com
Tag and Push the Image
# Tag the local image with the full ECR URI
docker tag pyapp:latest .dkr.ecr..amazonaws.com/devops-ecr:latest
# Push the image to the repository
docker push .dkr.ecr..amazonaws.com/devops-ecr:latest
Verify the Upload
- ECR ์ฝ์์ ์ฝ๋๋ค.
devops-ecr์ ์ฅ์๋ฅผ ์ ํํฉ๋๋ค.latestํ๊ทธ๊ฐ ๋ถ์ ์ด๋ฏธ์ง๊ฐ ํ์๋๋์ง ํ์ธํฉ๋๋ค.
๋ค๋ฅธ ๋จธ์ ์์ ์ด๋ฏธ์ง๋ฅผ ํ๋งํด ๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค(์ธ์ฆ ํ):
docker pull .dkr.ecr..amazonaws.com/devops-ecr:latest
Common Issues & Tips
| Issue | Resolution |
|---|---|
| Incorrect region | ์ ์ฅ์ URI๊ฐ CLI์ ์ค์ ๋ ๋ฆฌ์ ๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค. |
| Access denied | IAM ์ฌ์ฉ์์๊ฒ AmazonEC2ContainerRegistryFullAccess ์ ์ฑ
์ด ๋ถ์ฌ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. |
| Missing tag | ํธ์ํ๊ธฐ ์ ์ ๋ก์ปฌ ์ด๋ฏธ์ง์ ์ ์ฒด ECR URI๋ฅผ ์ฌ์ฉํด ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. |
| Login expiry | Docker ๋ก๊ทธ์ธ ์ธ์ ์ 12์๊ฐ ํ ๋ง๋ฃ๋ฉ๋๋ค. ํ์ ์ ๋ก๊ทธ์ธ ๋ช ๋ น์ ๋ค์ ์คํํฉ๋๋ค. |
Next Steps
์ด๋ฏธ์ง๊ฐ ECR์ ์ ์ฅ๋๋ฉด ECS, EKS, Lambda ๋ฑ ์๋น์ค์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํด ๋น๋ยทํธ์ ๊ณผ์ ์ ์๋ํํ๋ ๊ฒ์ด ์์ฐ์ค๋ฌ์ด ๋ค์ ๋จ๊ณ์ ๋๋ค.
Resources
- KodeKloud Engineer โ Practice Labs โ ์ค์ AWS ํ๊ฒฝ์์ ์ด ์์ ๋ค์ ์ง์ ํด๋ณด์ธ์.
- LinkedIn: Hritik Raj
- GitHub: 100 Days of Cloud (โญ ์ฌ์ ์ ์ง์ํด ์ฃผ์ธ์)