Dockerfile 명령어 정리

1차 카테고리
Docker
생성 일시
2024/09/04 15:04
최종 편집 일시
2025/02/04 14:39
발행여부
published
1 more property

Dockerfile이란

작성한 Dockerfile 스크립트를 기반으로 docker 이미지를 생성해주는 역할을 한다.
docker 명령어는 Docker 설치 및 명령어 정리 를 참조.

Dockerfile 작성

FROM

베이스 이미지 지정 명령. Dockerfile 필수 작성 명령어.
FROM ubuntu:18.04
Bash
복사

LABEL

key=value 형식으로 메타데이터 주입.
제작자, 버전, 설명, 작성일 등등
LABEL author="minsoftk@gmail.com"
Bash
복사

COPY

호스트 파일들을 이미지 내부 디렉토리로 복사한다.
# minsoftk의 파일들을 이미지 내부 디렉토리로 복사한다. COPY ./minsoftk /var/www/html/
Bash
복사

CMD

쉘을 직접 지정해줘서 명령을 전달
-c 옵션은 쉘 명령을 터미널상에서 받지 않고, 인자로 받겠다는 의미
Dockerfile에 한가지만 설정해야함.

RUN

docker는 이미지 생성시, 각 단계를 layer로 나누어 작성함.
이를 통해 특정 단계 변경시, 전체 이미지를 다시 다운로드 받지 않음.
일종의 Layer를 만들 수 있는 명령.
RUN apt-get update # 패키지 정보 업데이트 RUN apt-get install -y apache2 apt-utils # 중간에 Y/N를 전부 Y로 선택
Bash
복사

ENTRYPOINT

docker run에 CMD 명령에 덮어씌워지지 않는 반드시 실행해야 하는 명령을 기입할 때 사용.
ENTRYPOINT ["usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Bash
복사

Dockerfile 작성 예시

FROM ubuntu:18.04 LABEL maintainer="minsoftk@gmail.com" COPY ./minsoftk /var/www/html/ CMD ["bin/sh", "-c", "echo", "hello"] RUN apt-get update RUN apt-get install -y apache2 apt-utils ENTRYPOINT ["usr/sbin/apache2ctl", "-D", "FOREGROUND"] # docker 컨테이너의 특정 포트를 외부에 오픈 # docker run -p 로도 설정. 해당 포트를 호스트 PC 포트와 맵핑까지 함. # 반면에 EXPOSE는 맵핑을 시키지는 않음. EXPOSE 80 # 컨테이너 내의 환경변수 설정 # 설정한 환경변수는 RUN, CMD, ENTRYPOINT에서 사용 가능 ENV ROOT_PWD=1234 # RUN, CMD, ENTRYPOINT 명령이 실행될 디렉토리 설정 WORKDIR /usr/local/apache2/htdocs
Bash
복사

Dockerfile 실행 명령어

docker build {옵션} {Dockerfile의 경로} # 옵션 # -t: 이미지 이름 설정. 기본값은 lastest. docker build -t minsoftk:0.0.1 . # -f: 기본값은 Dockerfile로 찾지만, 다른 파일명으로 이미지를 빌드할 경우 필요한 옵션. docker build -t minsoftk:0.0.1 -f Dockerfile_v2 . # --pull: 이미지 생성시마다 최신 이미지를 다운로드 받는 옵션. docker build -t minsoftk:0.0.1 -f Dockerfile_v2 --pull=true .
Bash
복사

Dockerfile 컨테이너, 이미지 조사 명령어

# Layer에 대한 정보를 확인할 수 있다. docker history {컨테이너ID or 이름} # 컨테이너에서 특정 파일을 호스트 PC로 가져오기 docker cp {컨테이너ID or 이름}:{컨테이너의 파일 경로} {가져오려는 경로 입력} # 반대로 쓰면 컨테이너에 파일을 넣을 수 있다. docker cp {넣을 파일의 경로 입력} {컨테이너ID or 이름}:{컨테이너의 파일 경로}
Bash
복사

도커 컨테이너 간의 연결