이미지를 만들고 태그를 붙여 레지스트리에 올리고 내리는 절차를 모았다[1].
| 명령어 | 설명 | 예시 |
|---|---|---|
| FROM | 생성할 이미지의 기반이 될 이미지를 지정 | FROM ubuntu:22.04 |
| WORKDIR | 이후의 RUN, CMD, ENTRYPOINT, COPY, ADD 명령어가 실행될 작업 디렉터리를 설정 | WORKDIR /app |
| ENV | 이미지 내에서 사용할 환경 변수를 설정합니다. 컨테이너가 실행될 때도 사용 가능 | ENV APP_VERSION=1.0 |
| ARG | docker build 명령어 실행 시점에만 사용되는 변수, ENV와 달리 컨테이너 내부에서사용 불가 | ARG DB_USER=user |
| LABEL | 이미지 메타데이터 | LABEL maintainer="you@example.com" |
| USER | 명령어를 실행할 사용자 또는 UID | USER myuser |
| COPY | Host의 파일을 이미지 내로 복사, 일반적으로 ADD보다 권장 | COPY . . |
| ADD | COPY와 유사하지만, 압축 파일(.tar)을 자동으로 해제하거나 원격 URL에서 파일을 가져오기 등 가능 | ADD https://example.com/file.txt /app/ |
| RUN | 이미지 빌드 과정에서 셸 명령어를 실행 | RUN apt-get update && apt-get install -y nginx |
| CMD | 컨테이너가 시작될 때 기본으로 실행될 명령어를 지정 dockerfile 내에서 한번만 사용 가능 | CMD ["python", "app.py"] |
| ENTRYPOINT | 컨테이너가 시작될 때 항상 실행될 명령어를 지정합니다. docker run에서 전달된 인자들은 ENTRYPOINT 명령어의 인자로 사용됩니다. | ENTRYPOINT ["java", "-jar", "app.jar"] |
| EXPOSE | 컨테이너가 실행될 때 특정 네트워크 포트를 외부에 노출하도록 설정합니다. 실제 포트 매핑은 docker run 시 -p 옵션으로 지정해야 합니다. | EXPOSE 80 |
| VOLUME | 호스트나 다른 컨테이너와 데이터를 공유하고 영속적으로 저장하기 위한 마운트 포인트를 생성합니다. | VOLUME /data |
| | | | | |
| ----------- | -------------------------------------------- | -------------------------------------------------------------------- | | ------ |
| HEALTHCHECK | 컨테이너가 정상적으로 동작하는지 상태를 확인하는 명령어를 지정합니다. | HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ | | exit 1 |
| SHELL | RUN, CMD, ENTRYPOINT에서 사용될 기본 셸을 변경합니다. | SHELL ["/bin/bash", "-c"] | | |
| ONBUILD | 이 이미지를 기반으로 하는 다른 이미지가 빌드될 때 실행될 명령어를 추가합니다. | ONBUILD COPY . /app/src | | |
docker images
docker search $REPOSITORY_NAME/$IMAGE_NAME:$TAG
docker search library/hello-world:latest
tag가 생략되면 latest 검색한다.
docker pull $REPOSITORY_NAME/$IMAGE_NAME:$TAG
docker save $REPOSITORY_NAME/$IMAGE_NAME:$TAG > $EXPORTED_IMAGE_NAME.tar
docker load < $EXPORTED_IMAGE_NAME.tar
# REGISTRY_ADDRESS/$$SAMPLE_IMAGE:$TAG
# compaction을 위한 이미지 실행
# docker run --rm --name $TEMPORARY_CONTAINER_NAME REGISTRY_ADDRESS/$SAMPLE_IMAGE:$TAG
# 컨테이너가 실행 중인 상태에서
docker export $TEMPORARY_CONTAINER_NAME > $EXPORTED_FILENAME &&\
docker import $EXPORTED_FILENAME $REGISTRY_ADDRESS/$SAMPLE_IMAGE:$TAG
# docker build -t 이미지_이름:TAG dockerfile이_존재하는_경로
docker build -t haedongg.net/library/pyspark-notebook:v3.2.0-2021206 .
# host 추가
docker build --add-host $HOSTNAME:$IP_ADDRESS -t haedongg.net/library/pyspark:1.2.3 .
# image push
docker push haedongg.net/library/pyspark-notebook:v3.2.0-2021206
# tag를 명시적으로 지정할 경우 굳이 수행하지 않아도 된다.
docker image tag haedongg.net/library/pyspark-notebook:v3.2.0-2021206 haedongg.net/library/pyspark-notebook:latest
docker push haedongg.net/library/pyspark-notebook:latest
docker container run 레퍼런스 · Dockerfile 레퍼런스. 2026-09-17 확인. https://docs.docker.com/reference/cli/docker/container/run/ ↩︎