도커파일로 이미지 빌드 및 공유하기

정기용·2023년 7월 19일
1

Docker

목록 보기
3/4

도커의 기본 개념과 이미지를 다운받아 실행하는 방법은 “도커의 기초지식과 실습” 글에서 설명하였다.

도커는 이미지와 컨테이너 형태로 작동하기 때문에 환경에 구애받지 않고 쉽게 공유가 가능하다. Docker File을 통하여 현재 작업물을 이미지로 빌드하고, 도커 허브에 업로드하여 사람들과 공유할 수 있다. 그 과정을 이 글에서 실습한다.

1. 도커 파일을 작성한다.

도커 파일은 이미지를 빌드하기 위한 명세서이다. 이미지의 베이스가 되는 이미지 레이어(Python버전 등), 환경 변수, 필요한 파일들을 어떻게 조합하여 새로운 이미지를 만들어낼지 작성하는 레시피다. 일반 메모장이나 선호하는 텍스트편집기에서 내용을 작성하고 파일 이름을 ‘dockerfile’로 만든다. 아래는 책 “도커 교과서”에 나오는 도커 파일 예제이다.

FROM diamol/node

ENV TARGET=“blog.sixeyed.com”
ENV METHOD=“HEAD”
ENV INTERVAL=“3000”

WORKDIR /web-ping
COPY app.js .

CMD [“node”, “/web-ping/app.js”]

자주쓰는 도커 명령어

  • FROM: 모든 이미지는 다른 이미지로부터 출발한다. Python, Node, Ubuntu 등 다양한 시작 이미지 레이어를 지정한다.

  • ENV: 환경 변수 값을 지정하기 위한 인스트럭션이다. 값을 지정하기 위해 [key]=“[value]”형식을 따른다.

  • WORKDIR: 컨테이너 이미지 파일 시스템에 디렉터리를 만들고, 해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다. 리눅스는 “/temp”와 같은 방식으로 폴더를 만들고, 윈도 컨테이너에서는 “C:\temp”와 같은 방식으로 폴더를 만든다.

  • COPY: 로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 인스트럭션이다. [원본경로][복사경로] 형식으로 지정하면 된다. 예시 스크립트에서는 로컬 파일 시스템에 있는 app.js 파일을 이미지의 작업 디렉터리로 복사했다.

  • RUN: 쉘(shell)에서 커맨드를 실행하는 것처럼 이미지 빌드 과정에서 필요한 커맨드를 실행하기 위해 사용됩니다.

  • ENTRYPOINT: 이미지를 컨테이너로 띄울 때 항상 실행되야 하는 커맨드를 지정할 때 사용합니다. Docker 이미지를 마치 하나의 실행 파일처럼 사용할 때 유용합니다. 왜냐하면 컨테이너가 뜰 때 ENTRYPOINT 명령문으로 지정된 커맨드가 실행되고, 이 커맨드로 실행된 프로세스가 죽을 때, 컨테이너를 따라서 종료되기 때문입니다.

  • CMD: 해당 이미지를 컨테이너로 듸울 때 디폴트로 실행할 커맨드나, ENTRYPOINT명령문으로 지정된 커맨드에 디폴트로 넘길 파라미터를 지정할 때 사용합니다. CMD 명령문은 많은 경우, ENTRYPOINT 명령문과 함께 사용하게 되는데, ENTRYPOINT 명령문으로는 커맨드를 지정하고, CMD 명령문으로 디폴트 파리미터를 지정해주면 매우 유연하게 이미지를 실행할 수 있게 됩니다.

도표 정리

Command설명
FROM베이스 이미지 설정
ENV환경 변수 설정
WORKDIR작업 디렉토리 설정
COPY이미지의 파일 시스템으로 파일 또는 디렉토리 복사
RUN이미지 빌드 시 커맨드 실행
CMD이미지 실행시 디폴트 커맨드 또는 파라미터 설정
ENTRYPOINT이미지 실행 시 항상 실행되야 하는 커맨드 설정

2. 도커를 연다.

(Ubuntu) DockerFile이 있는 디렉토리로 이동하여 커맨드라인에서 도커를 실행한다.
(Window) DockerFile이 있는 디렉토리로 이동하여 cmd창을 켠다.

3. 도커에서 이미지를 빌드한다.

> docker image build –t test .

docker image build로 도커파일에서 이미지를 빌드한다. -t는 image tag를 test로 지정한다는 뜻이다. 마지막 상대경로 ‘ . ’은 현재 디렉토리에서 DockerFile을 찾아서 빌드한다는 뜻이다.

4. 도커 허브에 이미지를 업로드한다.

우선 도커 허브에 가입해야한다. 가입 후 ‘유저이름’과 ‘비밀번호’를 잘 기억해둔다.
로컬 cmd에서 도커에 로그인한다.

> docker login —username [유저 이름]
> [비밀번호]

이제 내 계정으로 도커 허브에 이미지를 업로드(Push)할 수 있다.
우선 로컬에서 빌드한 이미지의 이름을 도커허브 형식에 맞게 변경한다.

> docker image tag test-image [dockerID/image-name:tag]

그리고 이미지를 도커허브에 업로드한다.

> docker image push [dockerID/image-name:tag]

도커 허브 웹페이지에서 내 이미지가 업로드 된 것을 확인할 수 있다.

  1. 도커 허브에서 이미지를 다운받는다.

이제 다른 컴퓨터에서도 도커 허브 접근 권한만 있다면 자유롭게 이미지를 다운받아 바로 파일을 실행할 수 있다.

> docker container run [dockerID/image-name:tag]
profile
SKKU CS 23

0개의 댓글