베하~! BTC_녹차공원 팀의 하동녹차 입니다.
이번주는 Dockerfile 에 대한 설명과 Dockerfile 작성법에 대해 설명 해드리겠습니다!
Dockerfile 이란?
Dockerfile은 Docker 이미지를 빌드하기 위한 파일입니다.
Dockerfile은 일련의 명령문을 포함하며, 이 명령문은 Docker 이미지를 빌드할 때 순차적으로 실행됩니다.
Dockerfile을 사용하면 이미지에 필요한 패키지, 라이브러리, 구성 파일 등을 지정할 수 있으며,
이렇게 빌드된 Docker 이미지는 동일한 환경을 가진 여러 대의 컨테이너에서 실행할 수 있습니다.
Dockerfile은 Docker CLI를 사용하여 빌드됩니다.
Dockerfile을 작성한 후, Docker CLI를 사용하여 이미지를 빌드하고, Docker Hub와 같은
이미지 레지스트리에 이미지를 업로드할 수 있습니다.
Dockerfile 명령어
예시
# 주의사항
• docker build 시 -y 플래그를 사용하지 않으면 apt 명령어가 사용자의 확인을 묻기 때문에, build 중에 중단됩니다.
• RUN 명령어의 개별 명령 수를 최소화 하고 이미지의 레이어 수 를 감소 시키기 위해 설치 명령은 연결 하는 것이 좋습니다.
예시
일반 적으로 이미지의 컨테이너 실행 시 애플리케이션 데몬이 실행되도록 하는 경우 유용합니다.
예시
여러 개의 CMD 를 사용하는 경우 ENTRYPOINT 명령문과 함께 사용합니다.
• CMD 는 도커 컨테이너 실행 시 다양한 명령어를 지정하는 경우 유용 합니다.
• 즉, CMD는 컨테이너가 실행될 때 기본적으로 실행될 명령어를 정의하는 것이고,
ENTRYPOINT는 컨테이너가 실행될 때 실행될 명령어를 정의하고, 이 명령어와 함께 사용될 인수를 지정하는 것 입니다.
Dockerfile 에서 ENV를 설정하면 RUN,WORKDIR 등에서 환경 변수를 사용해 반복을 피할 수 있습니다.
WORKDIR을 설정하면 RUN, CMD, ENTRYPOINT, COPY, ADD 명령문은 해당 디렉터리를 기준으로 실행 합니다.
지정 된 경로가 없으면 자동으로 생성됩니다.
예시
Dockerfile에서 컨테이너가 실행될 때 노출할 포트를 지정하는 명령어입니다.
예시
• docker run -p 옵션
-p 옵션은 docker run 명령어에서 사용되며, 호스트와 컨테이너 간의 포트 매핑을 지정하는 옵션입니다.
• Dockerfile EXPOSE
EXPOSE 명령어는 Dockerfile에서 사용되며, 컨테이너가 실행될 때 노출할 포트를 지정하는 명령어입니다.
사실 이것만 읽더라도 저는 잘 이해가 가지 않았습니다.
이제, 제가 이해한 방식에 대하여 설명 드리겠습니다.
예를 들어, docker run -p 8080:80 nginx 명령어는 호스트의 8080 포트를 컨테이너의 80 포트로 매핑합니다.
이제 호스트에서 http://localhost:8080으로 접속하면 컨테이너의 80 포트로 연결됩니다.
반면에, EXPOSE 명령어는 Dockerfile에서 사용되며, 컨테이너가 실행될 때 노출할 포트를 지정하는 명령어입니다. EXPOSE 8080은 컨테이너가 8080 포트를 노출하도록 지정합니다.
하지만, EXPOSE 명령어만으로는 호스트와 컨테이너 간의 포트 매핑을 지정하는 것은 아닙니다.
포트 매핑을 설정하려면 docker run 명령어에서 -p 옵션을 사용해야 합니다.
따라서, docker run -p 8080:80과 Dockerfile에서 EXPOSE 8080을 함께 사용하면, 호스트의 8080 포트와 컨테이너의 80 포트를 매핑하고, 컨테이너가 8080 포트를 노출하도록 지정할 수 있습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA' 카테고리의 다른 글
[Git] Git 개요 및 사용법 (0) | 2023.06.22 |
---|---|
[Docker] Docker Buildx 란? (0) | 2023.05.25 |
Gitlab에대해 (1) | 2022.09.27 |
무정지를 위한 인프라 (2) 웹서버 이중화 (0) | 2022.06.15 |
프로세스 상태 전이도 (0) | 2022.05.26 |
댓글