Docker 커맨드와 컨셉 이해

2024. 12. 6. 09:37Docker

Docker 커맨드와 컨셉 이해

이 섹션은 Docker 이미지를 생성하고 관리하면서 디폴트 커맨드와 엔트리포인트(Entrypoint)를 설정하는 중요성에 대한 설명입니다. 각 단계의 역할과 결과를 간단히 정리하면서 자세히 설명하겠습니다.

 

1. Ubuntu 이미지 기반 컨테이너 생성 및 Git 설치

docker container run -it --name image-dev ubuntu:latest /bin/bash
apt-get update  
apt-get -y install git
git version
docker container diff image-dev

이 단계에서 한 일:

  1. ubuntu:latest 이미지를 기반으로 컨테이너를 생성하고, Bash 셸(/bin/bash)을 실행합니다.
  2. Git 설치:
    • 컨테이너 내부에서 Git을 설치했습니다.
  3. docker container diff:
    • 컨테이너 내부 파일 시스템 변경 내용을 확인했습니다.

 

2. 컨테이너를 이미지로 저장

docker container commit -a "@dockerinaction" -m "Added git" \
image-dev ubuntu-git

이 단계에서 한 일:

  1. image-dev라는 컨테이너의 현재 상태를 새로운 이미지로 저장했습니다.
  2. 새로운 이미지 이름: ubuntu-git.
  3. 작성자(author)커밋 메시지를 설정:
    • 작성자: @dockerinaction
    • 메시지: "Added git".

 

3. 새로운 이미지에서 Git 실행

docker container run --rm ubuntu-git git version

실행 결과:

  • ubuntu-git 이미지로 컨테이너를 생성하고, git version 명령을 실행했습니다.
  • 정상 출력: Git 버전이 출력됩니다.

 

4. 문제: 디폴트 커맨드 실행 시 유용하지 않은 결과

docker container run --rm ubuntu-git

실행 결과:

  • 아무 일도 일어나지 않는 것처럼 보입니다.
  • 이유:
    • ubuntu-git 이미지는 디폴트 명령으로 /bin/bash를 사용합니다.
    • 하지만 새 컨테이너에서 Bash 셸이 시작되었으나 커맨드가 없기 때문에 셸이 바로 종료됩니다.

 

5. 해결: 엔트리포인트 설정으로 디폴트 커맨드 변경

엔트리포인트란?

  • 컨테이너 시작 시 디폴트로 실행될 프로그램을 설정합니다.
  • 엔트리포인트를 설정하면 사용자는 별도의 커맨드 없이도 디폴트 프로그램을 실행할 수 있습니다.

엔트리포인트 설정 과정:

docker container run --name cmd-git --entrypoint git ubuntu-git
docker container commit -m "Set CMD git" -a "@dockerinaction" cmd-git ubuntu-git
docker container rm -vf cmd-git
  1. 엔트리포인트 설정:
    • --entrypoint git: git 커맨드를 컨테이너의 엔트리포인트로 설정합니다.
    • 이제 이 컨테이너는 시작할 때 디폴트로 git을 실행합니다.
  2. 커밋:
    • 새로운 상태를 ubuntu-git 이미지로 다시 저장합니다.
  3. 임시 컨테이너 제거:
    • cmd-git 컨테이너를 삭제합니다.

 

6. 엔트리포인트가 설정된 이미지 실행

docker container run --name cmd-git ubuntu-git version

실행 결과:

  • 이제 ubuntu-git 이미지에서 version 아규먼트만 입력하면 Git의 버전 정보가 출력됩니다.
  • 엔트리포인트가 git으로 설정되어 Git이 디폴트 실행 프로그램이기 때문입니다.

 

효율성과 사용자 경험

  1. 기존 방식:
    • 사용자가 항상 커맨드를 추가해야 했습니다. 예: docker run ubuntu-git git version.
  2. 엔트리포인트 설정:
    • Git을 엔트리포인트로 설정하여 사용자는 Git 관련 커맨드만 추가하면 됩니다. 예: docker run ubuntu-git version.

 

추가 설명: Entrypoint와 CMD의 차이

  • CMD:
    • 디폴트 커맨드를 지정합니다.
    • 엔트리포인트가 없는 경우 컨테이너 시작 시 CMD가 실행됩니다.
    • 엔트리포인트와 함께 사용할 경우 CMD는 엔트리포인트의 아규먼트로 전달됩니다.
  • Entrypoint:
    • 컨테이너 실행 시 항상 실행될 프로그램을 지정합니다.
    • 고정된 동작을 설정할 때 유용합니다.

Summary

  • 컨테이너는 디폴트 커맨드나 엔트리포인트 설정 없이 실행하면 별다른 동작 없이 종료될 수 있습니다.
  • 엔트리포인트를 설정하면 사용자 경험이 개선되고, 특정 동작을 간소화할 수 있습니다.
  • 위 과정은 컨테이너에서 필요한 동작(Git 실행)을 엔트리포인트로 설정해 사용성을 높인 좋은 예입니다.

'Docker' 카테고리의 다른 글

Docker Compose  (0) 2024.11.29
shell vs exec  (0) 2024.11.25
Bridge Network  (0) 2024.11.21
Linux Name  (0) 2024.11.21
alpine  (0) 2024.11.21