인프런 커뮤니티 질문&답변

양양님의 프로필 이미지
양양

작성한 질문수

개발자를 위한 쉬운 도커

Vue.js 프론트엔드 컨테이너 구성

이미지빌드 실습 질문

해결된 질문

작성

·

55

1

데이터베이스, 백엔드, 프론트 실습에서 컨테이너 실행 실습과 도커파일 이미지 빌드 실습 두개를 하는데 컨테이너 실행 실습은 커밋 방식을 통해 이미지를 만드는 방법인건가요? 두 실습의 연관이 무엇인지 모르겠어요 ㅠㅠ

답변 2

0

데브위키님의 프로필 이미지
데브위키
지식공유자

양양님 안녕하세요. 데브위키입니다.

먼저 각 실습에서는 말씀하신 대로

  1. 커밋을 통해 이미지를 만드는 방법

  2. 도커파일 이미지 빌드

두 가지 방법으로 이미지를 만들게 됩니다.

 

커밋으로 이미지를 만드는 것은 도커파일이 동작하는 방식을 더 직관적으로 이해하기 위해서입니다!

커밋 방식으로 직접 이미지를 만드시려면 컨테이너를 실행하고 내부에서 명령어를 통해 원하는 상태를 만든 후, 그 상태를 이미지로 커밋해야 합니다.

하지만 이 과정은 사람이 직접 작업해야 하기 때문에 실수가 발생하거나 일관적으로 만들어내기가 어렵습니다. 그래서 도커파일을 통해 이미지를 빌드하는 것이 표준으로 사용하는 방법인데요.

도커파일로 이미지를 빌드하는 것은 커밋 방식과 완전히 동일합니다. 차이는 도커가 도커파일의 지시어를 읽어서 대신 작업을 수행하는 것입니다.

결론적으로 두 가지 방식을 모두 실습하는 이유는 도커파일을 통해서 도커가 내부적으로 동작하는 원리를 직접 경험해보기 위해서입니다. 도커파일을 작성하고 docker build 명령을 실행했을 때 도커가 이미지를 만드는 과정을 직접 명령어를 실행해보시면서 이해하는 과정이라고 봐주시면 좋을 것 같습니다

 

 

0

안녕하세요, 인프런 AI 인턴입니다.

양양님, 질문해주신 데이터베이스, 백엔드, 프론트 실습과 관련한 도커 컨테이너 실행 및 이미지 빌드에 대해서 자세히 설명드리겠습니다.

도커 컨테이너 실행 실습과 이미지 빌드 실습의 차이점을 쉽게 이해할 수 있도록 설명드리겠습니다:

1. 컨테이너 실행 실습 (Commit 방식)

컨테이너 실행 실습에서는 기본적으로 존재하는 도커 이미지를 기반으로 컨테이너를 실행하고, 필요한 설정이나 변경을 수행한 후, 변경된 상태를 새로운 이미지로 저장(커밋)하는 방식입니다. 이는 다음과 같은 절차로 이루어집니다:

  1. 기존 이미지로 컨테이너 실행: docker run 명령어를 사용하여 베이스 이미지를 바탕으로 컨테이너를 실행합니다.
  2. 변경 사항 적용: 컨테이너 내부에서 설치, 설정 등을 수행하여 원하는 대로 환경을 구성합니다.
  3. 이미지 커밋: 변경된 컨테이너를 기반으로 새로운 이미지를 생성합니다. docker commit 명령어를 사용합니다.
docker commit <container_id> my_new_image:tag

2. 도커파일 이미지 빌드 실습 (Dockerfile 방식)

도커파일을 사용한 이미지 빌드 실습은 도커파일을 작성하여 이미지 자체를 처음부터 빌드하는 방법입니다. 도커파일은 이미지 생성 과정에서 실행될 명령어와 환경 설정을 포함하며, 도커 빌드는 도커파일을 읽어 해당 이미지를 생성합니다.

  1. Dockerfile 작성: 이미지 빌드 과정을 정의한 도커파일을 작성합니다. 예시:
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
  1. 이미지 빌드: docker build 명령어로 도커파일에서 이미지를 빌드합니다.
docker build -t my_app_image:tag .

연관성

두 실습 모두 도커 이미지를 생성하는 방법이지만, 접근 방식이 다릅니다. 컨테이너 실행 실습에서는 임시로 설정된 컨테이너를 사용하여 이미지를 생성하며, 도커파일 이미지 빌드 실습에서는 정형화된 스크립트를 통해 이미지를 재현성 있게 빌드합니다. 두 방법 모두 학습을 통해서 어떤 상황에서 어떤 방법을 쓰는 것이 좋을지 이해하게 될 것입니다.

유사한 내용을 다루고 있는 기존 답변을 참고해보시길 추천드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

양양님의 프로필 이미지
양양

작성한 질문수

질문하기