본문 바로가기
AWS/Docker

Docker 개념, 설치, 설정

by 하니__ 2024. 5. 27.

 

 

우선 docker 도커란 무엇인가

 

 

도커의 CI

즉, 도커를 상징하는 이미지 를 보면

 

고래로 보이는 형상물이

컨테이너를 싣고있는 모습을 하고 있는것을 알 수 있다

 

말 그대로

 

Docker는 소프트웨어를 "컨테이너"라는 형태로 패키징하고 배포하는 도구인데

여기서 컨테이너는

프로그램과 그 프로그램이 작동하는 데 필요한 모든

(코드, 라이브러리, 설정 파일 등)을 포함한 작은 단위다

 

그렇다면 왜 사용할까

 

왜?

로컬 뿐만 아니라 다른 위치에서도 사용 할수 있게 서버에 올리는데

이때 작업환경과 동일한 환경을 만들게 된다

Docker는 어느 환경에서든 동일하게 작동하게 만들어주는데

 

Docker를 사용하면 컨테이너를 한 번 만들어 두고,

필요한 곳에 간단히 가져다 쓸 수 있는데

이렇게 하면 설정 과정이 크게 줄어든다

 

컨테이너는 서로 독립적이면서 같은 시스템에서

여러 개의 컨테이너를 효율적으로 실행할 수 있게 한다

 

 

쉽게 말해

Docker를 도시락 상자에 비유 한다면

 

프로그램 -  다양한 음식을 도시락에 담는다면

 

컨테이너 - 도시락 상자는 음식을 담는 락앤락 이 락앤락은 음식을 상하지 않게 하고,

                   어디서든 동일한 상태로 먹을 수 있게 해준다

 

Docker - 여러 개의 도시락 상자를 한 번에 만들고,

               필요할 때마다 꺼내서 동일한 음식을 즐길 수 있게 해주는 도구

               음식(프로그램)이 어디서나 신선하고 동일한 상태로 제공될 수 있다

 

 

위의 링크를 따라 들어가 각 환경에 맞게 설치를 하자

 

 

설치가 진행되는 동안

 

AWS에서의 설정을 하도록 하자

 

AWS 설정

 

https://console.aws.amazon.com/iam/

 

https://us-east-1.console.aws.amazon.com/iam/home

 

us-east-1.console.aws.amazon.com

 

 

 

링크를 따라들어가던가 위 화면과 같이 IAM을 검색하여 들어가도록 하자

 

그리고 좌측의 사용자를 클릭

사용자 이름을 클릭

 

그리고 권한추가를 클릭하자

직접 정책연결을 선택후

 

 

container를 검색하여

 

아마존 EC2 컨테이너 레지스트리 풀 액세스를 선택하자

그리고 권한추가를 해 준뒤에

 

컨테이너를 검색하여

 

ECR을 선택

서비스가 아니라 레지스트리를 선택하자

 

 

 

 

 

 

그리고 리포지토리 생성을 클릭

이때 프라이빗을 설정하면 비용이 발생하니

 

FreeTier 라면 퍼블릭을 선택하도록 하자

 

 

이부분에서 이름은 

지금 올리려고 하는 서버의 폴더 이름을

아래와 같이 참고하여

 

 

-dev 를 추가하여 적어주자

 

그리고 생성

 

 

 

좌측의 퍼미션 클릭

편집 클릭

명령문 추가 클릭

 

 

 

 

 

정책 JSON편집을 클릭하여

 

아래 문구를 copy & paste 하자

ecr-public:GetAuthorizationToken

위에 들어가도 상관없고 아래 들어가도 상관없다

들여쓰기를 맞춰주고 저장을 클릭하자

 

 

 

혹시 이곳에 추가가 안됐다면

, 쉼표를 까먹지 않았나 확인하자

 

 

VSC 설정

 

 

확장자 없이 Dockerfile 라고 파일을 생성하자

 

 

 

이런게 뜬다면 인스톨 하고

 

 

안 뜬다면

 

 

좌측의 익스텐션을 클릭하여

 

 

이 녀석을 설치하자

 

설치가 완료되면 좌측의 컨테이너를 싣고 있는 고래가 생긴다

 

아무튼 생성한 Dockfile에

FROM public.ecr.aws/lambda/python:3.10
COPY . ${LAMBDA_TASK_ROOT}
COPY requirements.txt .

RUN yum -y install gcc
RUN pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

CMD ["app.handler"]

 

라고 작성하고

 

 

이번엔 아래와 같이 파일을 생성후 내용을 적어준다

__pycache__/
.git
.serverless/
.gitignore
.dockerignore
serverless.yml

 

 

 

그리고 이번엔 이 파일을 들어가

좌측의 부분을 우측의 부분처럼 수정하자

 

 

 

 

 

 

 

 

 

그리고 이 부분은

 

아래의 파일을 들어가

 

여기에 저 부분만 copy&paste 해주고

위의 플러그인 부분은 전부 삭제한다

 

 

 

그리고 이번엔 app.py로 들어간 뒤

 

 

우선 아래의 문구를 입력해 설치한 뒤

pip install serverless-wsgi

임포트 문을 작성하고

 

아래의 문구를 아래의 위치에 작성

def handler(event, context) :
    return serverless_wsgi.handle_request(app, event, context)

 

 

 

그리고 sls deploy를 입력하여

정상적으로 작동하는지 확인하자

 

 

 

정상적으로 작동하는것을 확인 할 수 있다

'AWS > Docker' 카테고리의 다른 글

Docker 자동배포 Git Actions  (0) 2024.05.28