Dockerfile로 Image 빌드하고 Container 실행하기
이번 글에서는 Dockerfile을 이용해 Docker Image를 빌드하고, 빌드한 Image로 Docker Container를 실행하는 방법을 설명한다.
Dockerfile
먼저 Dockerfile은 Docker Image를 만들기 위해 명령어들을 모아놓은 스크립트 파일이다.
이 글에서 만들어 볼 Docker Image는 KST
시간대가 설정된 Ubuntu
이고, Dockerfile은 아래와 같다.
1
2
3
4
5
6
7
8
9
10
FROM ubuntu
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update
RUN apt upgrade -y
RUN apt install -y tzdata
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
핵심 내용은 다음과 같다.
FROM ubuntu
: ubuntu Docker Image를 Base로 지정ARG DEBIAN_FRONTEND=noninteractive
: Docker Image 빌드 시 DEBIAN_FRONTEND 환경변수의 값을 noninteractive로 설정RUN apt upgrade -y
: apt upgrade -y 명령어를 실행ENV TZ=Asia/Seoul
: Docker Image 빌드 및 Docker Container 실행 시 TZ 환경변수의 값을 Asia/Seoul로 설정
FROM <image name>
명령어는 현재 빌드하고자 하는 Docker Image의 Base Image를 지정하는 데 사용한다.
ARG <command>
와 ENV <command>
명령어는 둘 다 환경변수를 설정한다는 점은 똑같지만, ARG <command>
명령어는 Docker Image 빌드 시에만 적용되고, ENV <command>
명령어는 Docker Image 빌드 시뿐만 아니라 Docker Container 실행 시에도 적용된다는 점이 다르다.
RUN <command>
명령어는 지정한 명령어를 실행하는 데 사용한다.
Docker Image 빌드
다음 명령어를 통해 작성한 Dockerfile로 Docker Image를 빌드할 수 있다.
1
docker build -t custom-image .
전달한 옵션은 다음과 같다.
-t custom-image
: custom-image라는 이름으로 Docker Image를 빌드.
: 빌드 명령어 실행 위치를 현재 위치로 설정 (Dockerfile을 현재 위치에서 참조)
빌드가 완료되면 다음 명령어로 Docker Image를 확인해볼 수 있다.
1
docker images
방금 빌드했던 custom-image
Docker Image와 Base로 지정했던 ubuntu
Docker Image가 보인다.
Docker Container 실행
빌드한 Docker Image를 Docker Container로 실행할 수 있다.
1
docker run --name kst-container -i -t custom-image
명령어의 내용은 다음과 같다.
--name kst-container
: 컨테이너의 이름 지정-i
: interactive 모드-t
: 가상 tty로 연결
custom-image
를 이용한 kst-container
가 실행되었다.
현재 시간을 확인해보자.
1
date
시간대가 KST
로 설정되어 있음을 알 수 있다.