Docker는 애플리케이션을 컨테이너라는 독립된 환경에서 실행할 수 있게 해주는 도구입니다.
컨테이너를 만들고 관리하는 데 있어서 중요한 파일이 바로 Dockerfile입니다.
Dockerfile은 Docker 이미지를 정의하는 텍스트 파일로, 어떤 소프트웨어를 설치하고, 어떤 설정을 해야 하는지를 명시합니다.
이 블로그에서는 Dockerfile의 역할과 Docker 이미지를 빌드하는 과정을 초보자도 이해할 수 있도록 설명하겠습니다.
1. Dockerfile이란 무엇인가요?
Dockerfile은 Docker 이미지를 만들기 위한 스크립트 파일입니다.
이 파일에는 이미지가 어떻게 구성될지에 대한 지침이 포함되어 있습니다.
즉, 어떤 베이스 이미지에서 시작할지, 어떤 소프트웨어를 설치할지, 어떤 환경 변수를 설정할지 등을 정의합니다.
2. Dockerfile의 기본 구조
Dockerfile은 다양한 명령어로 구성됩니다. 각 명령어는 이미지의 특정 부분을 정의하며, 명령어가 순서대로 실행됩니다.
가장 기본적인 명령어로는 FROM, RUN, COPY, CMD 등이 있습니다.
2.1 FROM
FROM 명령어는 Docker 이미지의 베이스가 되는 이미지를 지정합니다.
예를 들어, Node.js 애플리케이션을 만들려면 Node.js가 설치된 기본 이미지를 사용할 수 있습니다.
FROM node:14
- node:14: Node.js 14 버전이 설치된 이미지를 베이스로 사용합니다.
2.2 RUN
RUN 명령어는 컨테이너 내부에서 실행될 명령어를 지정합니다. 주로 소프트웨어를 설치하거나 패키지를 업데이트하는 데 사용됩니다.
RUN apt-get update && apt-get install -y curl
- apt-get update && apt-get install -y curl: 패키지 목록을 업데이트하고 curl을 설치합니다.
2.3 COPY
COPY 명령어는 호스트 시스템의 파일을 컨테이너의 파일 시스템으로 복사합니다.
COPY package.json /app/
- package.json: 호스트의 package.json 파일을 컨테이너의 /app/ 디렉터리로 복사합니다.
2.4 CMD
CMD 명령어는 컨테이너가 실행될 때 기본으로 실행될 명령어를 설정합니다. 보통 애플리케이션의 실행 명령어를 설정하는 데 사용됩니다.
CMD ["node", "app.js"]
- node app.js: 컨테이너가 시작되면 node app.js 명령어가 실행됩니다.
3. 간단한 Dockerfile 작성 예제
여기서는 간단한 Node.js 애플리케이션을 위한 Dockerfile을 작성해 보겠습니다.
# 1. Node.js 베이스 이미지 사용
FROM node:14
# 2. 작업 디렉터리 생성 및 설정
WORKDIR /app
# 3. package.json 및 package-lock.json 파일 복사
COPY package*.json ./
# 4. 의존성 설치
RUN npm install
# 5. 애플리케이션 소스 복사
COPY . .
# 6. 애플리케이션 포트 설정
EXPOSE 3000
# 7. 애플리케이션 실행 명령어 설정
CMD ["node", "app.js"]
- WORKDIR /app: 컨테이너 내부의 작업 디렉터리를 설정합니다.
- COPY package*.json ./: package.json과 package-lock.json을 작업 디렉터리로 복사합니다.
- RUN npm install: 애플리케이션의 의존성을 설치합니다.
- COPY . .: 애플리케이션 소스 코드를 복사합니다.
- EXPOSE 3000: 컨테이너가 3000 포트를 사용할 것을 설정합니다.
- CMD ["node", "app.js"]: 컨테이너가 시작될 때 node app.js를 실행합니다.
4. Docker 이미지 빌드하기
Dockerfile을 작성한 후, Docker 이미지를 빌드해야 합니다. 다음 명령어를 사용하여 이미지를 빌드할 수 있습니다.
docker build -t my-node-app .
- docker build: Docker 이미지를 빌드합니다.
- -t my-node-app: 빌드된 이미지에 my-node-app이라는 태그를 붙입니다.
- .: 현재 디렉터리에서 Dockerfile을 찾습니다.
5. Docker 이미지 실행하기
빌드한 이미지를 실행하려면 다음 명령어를 사용합니다.
docker run -p 3000:3000 my-node-app
- docker run: Docker 컨테이너를 실행합니다.
- -p 3000:3000: 호스트의 3000 포트를 컨테이너의 3000 포트에 매핑합니다.
- my-node-app: 실행할 Docker 이미지의 이름입니다.
Dockerfile은 Docker 이미지를 정의하는 중요한 파일입니다.
이를 통해 베이스 이미지 선택, 소프트웨어 설치, 파일 복사, 실행 명령어 설정 등을 할 수 있습니다.
Dockerfile을 작성하고, Docker 이미지를 빌드하여 실행하는 과정은 Docker를 사용하는 데 있어서 핵심적인 부분입니다.
이 블로그가 Dockerfile을 이해하고 사용하는 데 도움이 되었기를 바랍니다.
추가적인 질문이나 도움이 필요하시면 언제든지 말씀해 주세요!
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Docker' 카테고리의 다른 글
Docker Dockerfile 작성 및 이미지 빌드 / 이미지 빌드: docker build 명령어 사용법 (3) | 2024.09.11 |
---|---|
Docker Dockerfile 작성 및 이미지 빌드 / Dockerfile 작성법: 기본 구조 및 명령어 (2) | 2024.09.11 |
Docker 이미지와 컨테이너/ 명령어 사용법: docker run, docker ps, docker stop, docker rm (2) | 2024.09.10 |
Docker 이미지와 컨테이너/ Docker 컨테이너 개념부터 실행 및 관리 (1) | 2024.09.10 |
Docker 이미지와 컨테이너/Docker 이미지: 개념, 생성 방법, 이미지 레지스트리 (4) | 2024.09.10 |