일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 별 찍기
- 브루트포스 알고리즘
- LeetCode Remove Duplicates from Sorted List in c
- 구현
- 사칙연산
- 이분 탐색
- 유클리드 호제법
- 정렬
- 스택
- 실패함수
- Queue
- 프로그래머스
- 문자열제곱
- 재귀
- 임의 정밀도 / 큰 수 연산
- 조합론
- 큐
- 수학
- LeetCode 83 c언어
- 연결리스트 중복제거
- 자료 구조
- LeetCode 83번
- 연결리스트 정렬
- 시뮬레이션
- 정수론
- 다이나믹 프로그래밍
- 문자열
- KMP알고리즘
- 해시를 사용한 집합과 맵
- 큰 수 연산
- Today
- Total
hahn
[docker] docker file 본문
구성 요소
Dockerfile은 도커 이미지를 생성하기 위한 스크립트 파일입니다. Dockerfile은 일련의 명령어(instruction)로 구성되며, 각 명령어는 이미지를 빌드하는 과정에서 특정 작업을 수행합니다.
주요 명령어 (Instructions)
FROM
기본(base) 이미지를 지정합니다. 주로 OS 이미지나 런타임 이미지를 사용합니다.
FROM ubuntu:20.04
RUN
이미지를 빌드할 때 실행할 명령어를 지정합니다. 주로 패키지를 설치하거나 설정을 변경하는 데 사용됩니다.
RUN apt-get update && apt-get install -y python3
ADD
이미지에 호스트의 파일이나 폴더를 추가합니다.
복사하려는 디렉토리가 존재하지 않으면 자동으로 생성됩니다.
URL을 지정하거나 압축 파일을 자동으로 해제하는 기능이 있습니다.
ADD app.tar.gz /app
COPY
호스트의 파일이나 이미지를 복사합니다.
ADD와 가장 큰 차이점은 URL을 지정하거나, 압축 파일을 자동으로 해제하지 않는다는 점입니다.
COPY ./app /app
EXPOSE
컨테이너가 수신 대기할 포트를 지정합니다.
이 명령어는 실제 포트를 열지는 않지만, 이 포트가 외부 연결에 사용된다는 정보를 제공합니다.
EXPOSE 80
ENV
환경 변수를 설정합니다. 컨테이너 내에서 실행되는 애플리케이션이 이 환경 변수를 참조할 수 있습니다
$name, ${name}의 형태로 사용할 수도 있습니다.
추가적으로 ${name:-else}와 같이 name이 정의가 되지 않았을 때 else를 사용과 같은 문법도 사용가능합니다.
ENV APP_ENV=production
CMD
컨테이너가 시작될 때 실행할 기본 명령을 지정합니다.
Dockerfile에서 한 번만 사용할 수 있으며, 컨테이너 실행 시 다른 명령을 지정하면 덮어쓰여집니다.
CMD ["python3", "app.py"]
ENTRYPOINT
컨테이너가 시작될 때 실행할 명령을 지정합니다.
CMD와 다르게, ENTRYPOINT는 기본 실행 파일을 지정하며, CMD나 Docker 실행 명령의 인수로 전달됩니다.
ENTRYPOINT ["python3"]
VOLUME
호스트와 컨테이너 간의 디렉토리를 공유할 수 있도록 마운트 포인트를 설정합니다
이 명령어는 데이터가 컨테이너의 수명 주기와 독립적으로 지속되도록 합니다.
VOLUME ["/data"]
WORKDIR
작업 디렉토리를 설정합니다.
이 디렉토리는 이후의 RUN, CMD, ENTRYPOINT, COPY, ADD 명령어가 실행될 디렉토리입니다.
WORKDIR /app
예제 Dockerfile
# 베이스 이미지 설정
FROM ubuntu:20.04
# 패키지 설치
RUN apt-get update && apt-get install -y python3
# 애플리케이션 파일 복사
COPY ./app /app
# 작업 디렉토리 설정
WORKDIR /app
# 환경 변수 설정
ENV APP_ENV=production
# 데이터 저장소 설정
VOLUME ["/data"]
# 컨테이너가 수신 대기할 포트
EXPOSE 80
# 애플리케이션 실행 명령 설정
ENTRYPOINT ["python3"]
CMD ["app.py"]
- FROM: Ubuntu 20.04 이미지를 기반으로 합니다.
- RUN: apt-get을 사용하여 Python3을 설치합니다.
- COPY: 호스트의 ./app 디렉토리를 컨테이너의 /app 디렉토리에 복사합니다.
- WORKDIR: 작업 디렉토리를 /app으로 설정합니다.
- ENV: APP_ENV 환경 변수를 production으로 설정합니다.
- VOLUME: /data 디렉토리를 호스트와 공유하여 데이터가 지속되도록 설정합니다.
- EXPOSE: 컨테이너가 포트 80을 수신 대기하도록 지정합니다.
- ENTRYPOINT: 컨테이너가 시작될 때 python3 명령어를 실행하도록 지정합니다.
- CMD: python3 명령어에 인수로 app.py를 전달하여 애플리케이션을 실행합니다.
'가상화 > Docker' 카테고리의 다른 글
[docker]dockerfile build (0) | 2024.08.07 |
---|---|
[docker] 컨테이너와 통신 (0) | 2024.08.07 |
[docker]httpd container 실행, 삭제 (0) | 2024.08.07 |
[docker] 도커 명령어 구조 (0) | 2024.08.07 |
[docker] 도커 컨테이너 구조(이미지 레이어, 컨테이너 레이어) (0) | 2024.08.07 |