Dockerfile
Docker에서 인프라 구성을 기술한 파일을 'Dockerfile'이라고 함.
Docker 이미지를 작성하기 위해서는 다음과 같은 내용들이 필요합니다.
- 베이스가 될 Docker 이미지
- Docker 컨테이너 안에서 수행한 조작(명령)
- 환경변수 등의 설정
- Docker 컨테이너 안에서 작동시켜둘 데몬 실행
Dockerfile은 이와 같이 Docker 상에서 작동시킬 컨테이너 구성 정보를 기술하기 위한 파일입니다.
Docker의 build 명령은 Dockerfile에 기술된 구성 정보(Dockerfile)를 바탕으로 Docker 이미지를 작성합니다.
Dockerfile의 기본 구문
Dockerfile은 텍스트 형식의 파일로, 에디터 등을 사용하여 작성합니다. 확장자는 필요 없으며, 'Dockerfile' 이라는 이름의 파일에 인프라 구성 정보를 작성합니다. Dockerfile 이외의 파일로 이미지를 작성할 시 이미지를 빌드할 때 파일명을 명시적으로 지정해야 합니다.
Dockerfile의 기본 구문은 다음과 같습니다.
명령어 인수 #주석
명령어는 대문자든 소문자든 상관없지만 관례적으로 대문자로 통일하여 사용합니다. 주석을 사용할 경우 #을 붙입니다.
Dockerfile에서 사용하는 주요 명령은 다음과 같습니다.
명령 | 설명 |
FROM | 베이스 이미지 지정 |
RUN | 명령 실행 |
CMD | 컨테이너 실행 명령 |
LABEL | 라벨 설정 |
EXPOSE | 개방할 포트 번호 |
ENV | 환경변수 |
ADD | 파일/디렉토리 추가 |
COPY | 파일 복사 |
ENTRYPOINT | 컨테이너 실행 명령 |
명령 | 설명 |
VOLUME | 볼륨 마운트 |
USER | 사용자 지정 |
WORKDIR | 작업 디렉토리 |
ARG | Dockerfile 안의 변수 |
ONBUILD | 빌드 완료 후 실행되는 명령어 |
STOPSIGNAL | 시스템 콜 시그널 설정 |
HEALTHCHECK | 컨테이너의 헬스 체크 |
SHELL | 기본 쉘 설정 |
Dockerfile로부터 Docker 이미지 생성
Dockerfile로부터 이미지를 생성하려면 docker build 명령어를 사용합니다.
docker build 명령어 서식
docker build -t [생성할 이미지명]:[태그명] [Dockerfile의 위치]
예시
- Dockerfile 생성
mkdir centos_test && cd centos_test
touch Dockerfile
- Dockerfile 작성
#베이스 이미지 설정
FROM centos:centos7
이 Dockerfile로부터 sample이라는 이미지를 작성하려면 다음과 같이 명령어를 실행합니다.
cd [Dockerfile 위치]
docker build -t sample:1.0 .
sample 이미지의 태그는 1.0으로 지정하였으며 Dockerfile의 위치를 . 으로 지정하여 현재 폴더의 Dockerfile을 사용하였습니다(상대경로). Dockerfile의 저장위치는 절대경로로도 설정가능합니다.
- 실행결과
root@wlfnwelkn:/home/docker/centos_test# docker build -t sample:1.0 .
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM centos:centos7
centos7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e
Status: Downloaded newer image for centos:centos7
---> 8652b9f0cb4c
Successfully built 8652b9f0cb4c
Successfully tagged sample:1.0
-생성된 이미지 확인
docker image ls
centos:centos:7이 다운로드 되어져있고, sample:1.0 이미지가 생성된 것을 확인할 수 있습니다.
- 생성한 이미지 실행
docker run -it centos:centos7 bash
//컨테이너 내부
$cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
생성한 이미지가 잘 실행되는 것을 확인할 수 있습니다.
'About > Docker' 카테고리의 다른 글
[Docker] Dockerfile - Multi-stage build(멀티스테이지 빌드) (0) | 2021.05.03 |
---|---|
[Docker] 이미지 레이어 구조 (0) | 2021.05.03 |
[Docker] Container CPU 제한 (1) | 2021.04.26 |
[Docker] 실행 중인 컨테이너 한 번에 종료(삭제)하기 (0) | 2021.03.25 |
[Docker] Docker에서 node.js 웹 서버 실행 (1) | 2021.03.21 |