Dockerfile¶
도커 스터디 - 처음부터 제대로 배우는 도커/쿠버네티스 컨테이너 개발과 운영 ch. 2
created: 2026.1.13 last updated: 2026.1.15
- 컨테이너: 컨테이너 이미지를 기반으로 생성되고 구현된 파일 시스템과 애플리케이션이 실행되는 상태
- 컨테이너 이미지: 컨테이너를 구성하는 파일 시스템과 실행 애플리케이션 및 설정을 모은 것으로 컨테이너를 생성하기 위해 사용하는 템플릿
- 하나의 컨테이너 이미지로 여러 개의 컨테이너 생성
Dockerfile¶
FROM golang:1.20.5
WORKDIR /go/src/github.com/jpubdocker/echo
COPY main.go .
RUN go mod init
CMD ["go", "run", "main.go"]
- 도메인 특화 언어domain specific language, DSL를 사용해 이미지 구성을 정의
인스트럭션 instruction¶
- FROM, RUN 같은 키워드
FROM: 생성할 컨테이너 이미지의 기본 이미지(베이스 이미지)를 지정WORKDIR: 컨테이너 안 현재 디렉터리 지정(없으면 생성) - 컨테이너 안에서 cd + mkdirCOPY: 빌드 콘텍스트(이미지를 빌드하는 환경의 현재 디렉터리) 파일과 디렉터리를 컨테이너로 복사COPY [from(빌드 콘텍스트 경로)] [to(컨테이너 내 작업 디렉터리)]- 내 컴퓨터에서 컨테이너로 파일을 복사
RUN: 컨테이너 이미지를 빌드할 때 컨테이너에서 실행하는 커맨드 정의CMD: 컨테이너를 실행할 때 컨테이너에서 실행할 프로세스 지정 - 컨테이너 시작 시 한번 실행- 문자열로도 가능하지만 배열을 추천
Dockerfile로 이미지를 만들고 docker로 이미지를 run하면 컨테이너가 뜬다
다른 인스트럭션
-ENTRYPOINT: 고정 명령어
- CMD: 기본 인자
- 둘이 합쳐져서 실행: java -jar app.jar
- docker run my-app -Xmx512m app.jar - CMD 부분만 교체 가능
LABEL: 이미지 생성자 기입 등 용도ENV: Dockerfile을 기반으로 생성한 도커 컨테이너에서 사용할 환경 변수 지정ARG: 이미지 빌드 시 사용하는 임시 변수(정보)
컨테이너 이미지 빌드¶
-docker image build: 컨테이너 이미지를 생성하기 위한 커맨드
컨테이너 실행¶
--it: 포어그라운드에서 동작
- -d: 백그라운드에서 실행
포트 포워딩¶
- 컨테이너는 가상 환경이지만 외부로부터 독립된 머신 - 컨테이너 포트는 내부에 한정된 포트이며 외부에서 접속 불가
- 포트 포워딩을 사용하여 호스트 머신의 포트를 컨테이너 포트에 연결