[ASC] week2. Container & AWS ECR Hands-On

abi hong·2023년 6월 10일

AWS

목록 보기
2/11

VM and Container

  • VM
    자체 OS를 포함하고 있다. 하이퍼바이저 위에서 실행되는 완전한 운영체제를 가진 독립적인 환경
    VM 장단점
    가상화 , 완전한 정리 다양한 os 호스팅 가능, 성능 안좋음, 하드웨어 낭비

  • Container
    - Host OS와 리소스 공유하고 격리된 프로세스를 실행하는 가벼운 가상화 단위
    - OS에서 제공하는 자원격리 기술을 이용하여 컨테이너라는 단위로 서비스를 분리할 수 있게 만들어주고, 개발환경에 대한 걱정없이 배포가 가능
    Container 장단점
    가상화지만 운영체제는 호스트os와 공유, 가볍고 빠름, 보안과 격리에 제한

Container 상황극

  • container를 쓰지 않으면, 버전 확인후 수동으로 설치해야함..^^ == 환경설정 개빡셈

  • container 사용하면, 이미지(=버전정보, docker한테 보내서 설치 자동으로 해줌><) 실행해서 개발자들이 동일한 환경에서 작업 가능
    → 또한 application을 배포할 경우, 필요한 소프트웨어와 설정을 이미지에 포함시킬 수 있다. 배포 과정이 자동화되어 편리하고 일관성이 있어 관리에도 용이

Docker and Kubernetes

  • docker
    container를 사용자친화적으로 만든 회사와 기술, 컨테이너화 기술을 제공
  • kubernetes
    - container화 된 애플리케이션의 자동화된 배포, 확장 및 관리를 위한 오픈소스 플랫폼
    - 여러 컨테이너를 쿠버네티스가 관리
    → 물리적으로 분리 된 여러 서버에 띄워진 컨테이너를 관리가능(로드밸런싱)
    - 컨테이너 < 파드 < 노드 = 서버 , 따라서 한 서버안에 여러개의 노드가 존재 불가 → 하나의 노드는 하나의 서버

쿠버네티스가 도커 이제 더이상 지원안함… 왜? → 도커가 CRI를 지원하지 않아 호환성 문제가 발생, 전에는 dockershim을 사용했지만 유지보수 비용이 높다는 단점..

AWS ECR(Elastic Container Registry) Hands-On

1. Access Key 발급 후 credential 등록

IAM User 생성 후, Access Key를 발급 !

# 설정한 인증정보 확인
> aws configure list
    
# profile 등록
> aws configure --profile <profile_name>
    
# 사용할 profile로 전환
> export AWS_PROFILE="<profile_name>"
    
# 전환됐는지 확인
> aws sts get-caller-identity

아래와 같이 전환된 걸 볼 수 있다 !

2. ECR repo 만들기

3. 개발 환경 clone

> git clone https://github.com/aws-cloud-clubs/2023-docker-handson-smwu
# Flask 서버 구동 -> http://127.0.0.1:5000/
> pip3 install flask
> python3 -m flask run

구동되는거 확인 !

4. Docker Image 빌드

> docker build -t <img_name> .

Image 빌드 됨 !

5. Run Docker Container

> docker run --name asc-2nd-container -p 5000:5000 <img_name>

에러남.. ^^
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp 0.0.0.0:5000: bind: address already in use.

# 5000 사용 프로세스 확인
> lsof -i TCP:5000

# 프로세스 종료 명령어 실행
> kill -9 <PID>

6. Docker Tag command

# 빌드가 완료되면 이미지에 태그를 지정 가능
> docker tag <aws_account_ID>.dkr.ecr.<region>.amazonaws.com/asc-demo-repo:latest

Docker Tag 명령을 실행하는 이유는?
→ ECR에 푸시할 도커 이미지 이름은 ‘<aws_account_ID>.dkr.ecr..amazonaws.com/<image_name>’ 형식을 준수해야 하고, 이미지 버전 관리를 위해 태그를 변경 !

7. Push Docker Image

# ECR에 docker image push
> docker push <aws_account_ID>.dkr.ecr.<region>.amazonaws.com/asc-demo-repo:latest

ECR에서 Docker Image 가져오는 Hands-On

1. 기존 docker image 모두 삭제하고 실습 진행 !

> docker images
> docker rmi <img_name>

2. Pull Docker Image

> docker pull <aws_account_ID>.dkr.ecr.<region>.amazonaws.com/asc-demo-repo:latest

Dockerfile?
→ docker image를 생성하는데 필요한 스크립트 파일

0개의 댓글