본문 바로가기
IT/도커

4. 도커 이미지 생성, 푸쉬

by 노오-력 2023. 1. 21.

애플리케이션에서 사용하려는 컴포넌트나 서비스를 docker hub에서 찾을 수 없거나

개발 중인 애플리케이션을 도커화해서 배포를 쉽도록 만들고 싶을때

도커 이미지를 직접 만들어야한다.

 

파이썬 웹 애플리케이션을 만든다고 가정해보자

만약 수동으로 설정해야한다면

1. 우분투 같은 os로 시작해

2. apt-get update 로 소스 리포지토리를 업데이트하고

3. apt-get install -y python3와 python3-pip를 설치하고

4. pip 명령어로 flask를 설치하고

5. 애플리케이션의 소스코드를 넣은 뒤

6. flask 명령어로 웹 서버를 가동한다.

위와 같은 내용을 하나하나 다 처리해야한다.

 

1. Dockerfile 파일 생성

FROM ubuntu

RUN apt-get update
RUN apt-get install -y python3 python3-pip
RUN pip install flask

COPY app.py /opt/app.py

ENTRYPOINT FLASK_APP=/opt/app.py flask run --host=0.0.0.0

하지만 위와 같이 Dockerfile을 만들고 같은 디렉터리에 app.py 소스파일을 넣어

도커 이미지로 만들면 자동으로 실행된다.

 

FROM - 컨테이너의 기본 운영 체제 정의

RUN - docker가 기본 이미지에 특정 명령어를 실행시킴

COPY - 로컬 시스템의 파일을 복사해 docker 이미지에 넣음

           (위 예시에서는 현재 로컬디렉터리의 app.py 파일을 docker 이미지의 /opt/app.py로 복사)

ENTRYPOINT - 이미지가 컨테이너로 실행될 때, 작동할 명령어를 지정

 

docker는 레이어드 아키텍처로 이미지를 구축한다.

Dockerfile 파일 명령어 각각의 줄이 docker 이미지에 새로운 계층을 만든다.

계층마다 이전 계층의 변경 사항을 저장한다.

모든 계층은 캐시에 저장되므로 실패하더라도 해당 단계에서 빌드를 재실행한다.

Dockerfile을 수정해 단계를 수정해도 수정한 부분만 빌드하기 때문에 빠르다.

 

 

 

2. 이미지 빌드하기

$ docker build . -t [image_name]

Dockerfile이 있는 디렉터리에서 위 명령어를 실행하면 이미지를 만들 수 있다.

만든 이미지는 $ docker images 명령어로 확인할 수 있다.

 

 

 

3. docker hub에 public으로 이미지 푸쉬하기

$ docker login 으로 도커 로그인하기

$ docker push [로그인한 본인계정id]/[이미지이름]
ex) $ docker push noookyoku/my-webapp

docker 저장소에 push 하기 전에

$ docker build . -t [docker계정]/[이미지이름] 으로 이미지를 빌드한 뒤

빌드한 이미지를 저장소로 push 해야한다.

 

 

 

 

 

 

 

 

 

'IT > 도커' 카테고리의 다른 글

6. CMD vs ENTRYPOINT  (0) 2023.01.22
5. 도커 환경변수  (0) 2023.01.22
3. 도커 실행 관련(태그, 포트, 볼륨 매핑 등)  (0) 2023.01.19
2. 도커에서 ubuntu 이미지 실행(sleep, exec)  (0) 2023.01.19
1. 기본적인 docker 명령어  (0) 2023.01.19