Dockerfile은 컨테이너화된 애플리케이션을 빌드하기 위한 필수적인 도구입니다. Dockerfile에서 사용되는 각 명령어는 특정한 기능을 가지고 있으며, 이를 이해하고 효과적으로 사용하는 것이 중요합니다. 아래에서는 Nginx 웹 서버를 설정하는 간단한 Dockerfile 예제를 통해 각 명령어의 역할을 설명했습니다.
#FROM 명령어는 베이스 이미지를 지정합니다. 베이스 이미지는 새로운 이미지를 빌드할 때 시작점이 되는 이미지입니다.
#RUN 명령어는 지정된 명령을 실행하고, 그 결과를 새로운 이미지 레이어로 커밋합니다. 주로 소프트웨어 설치나 환경 설정에 사용됩니다.
#COPY 명령어는 호스트 머신의 파일이나 디렉토리를 이미지 내의 지정된 경로로 복사합니다.
#EXPOSE 명령어는 컨테이너가 지정된 포트를 수신할 수 있음을 나타냅니다. 이 명령어는 문서화 목적이며, 실제로 포트를 열지는 않습니다.
#CMD 명령어는 컨테이너가 시작될 때 실행할 기본 명령을 지정합니다. CMD는 Dockerfile의 마지막에 위치하며, 컨테이너가 실행될 때마다 호출됩니다.
#ENV 명령어는 환경 변수를 설정합니다. 여러 명령어에 걸쳐 사용할 수 있으며, 값은 $로 참조합니다.
#ADD 명령어는 COPY와 유사하지만, URL을 통해 파일을 다운로드하거나 tar 파일을 자동으로 추출할 수 있습니다.
#ENTRYPOINT 명령어는 컨테이너 실행 시 기본적으로 실행할 명령을 지정합니다. CMD와 함께 사용되어 추가 인자를 제공할 수 있습니다.
#VOLUME 명령어는 컨테이너 내의 특정 디렉터리를 호스트 파일 시스템이나 다른 컨테이너와 공유할 수 있는 볼륨으로 지정합니다.
#USER 명령어는 컨테이너 내에서 명령어를 실행할 사용자를 지정합니다. 보안상의 이유로 루트가 아닌 다른 사용자를 지정하는 것이 좋습니다.
#WORKDIR 명령어는 이후의 명령어가 실행될 작업 디렉터리를 설정합니다.
#ARG 명령어는 빌드 시점에 사용할 수 있는 변수를 정의합니다. docker build 명령어를 실행할 때 --build-arg 옵션을 사용하여 값을 전달할 수 있습니다.
이제 예제를 실제 실습에 사용해 보도록 하겠습니다.
순서는 아래와 같습니다.
A[Dockerfile 작성] --> B[Docker 이미지 빌드]
B --> C[Docker 컨테이너 실행]
C --> D[컨테이너 확인 및 테스트]
D --> E[컨테이너 관리 및 종료]
[Docker] GitLab 설치: Docker Compose로 빠르고 안전하게 (0) | 2024.05.28 |
---|---|
[Docker] Docker Compose: 다중 컨테이너 관리의 차이점과 실전 활용법 (0) | 2024.05.28 |
[Docker] 네트워킹: bridge vs host (0) | 2024.05.24 |
[Docker] 데이터 저장 및 관리 방법 / bind or volume 마운트 (0) | 2024.05.24 |
[Docker] 아키텍처 architecture (0) | 2024.05.23 |