Docker 커맨드와 컨셉 이해
2024. 12. 6. 09:37ㆍDocker
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
이 단계에서 한 일:
ubuntu:latest
이미지를 기반으로 컨테이너를 생성하고, Bash 셸(/bin/bash
)을 실행합니다.- Git 설치:
- 컨테이너 내부에서 Git을 설치했습니다.
docker container diff
:- 컨테이너 내부 파일 시스템 변경 내용을 확인했습니다.
2. 컨테이너를 이미지로 저장
docker container commit -a "@dockerinaction" -m "Added git" \
image-dev ubuntu-git
이 단계에서 한 일:
image-dev
라는 컨테이너의 현재 상태를 새로운 이미지로 저장했습니다.- 새로운 이미지 이름:
ubuntu-git
. - 작성자(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
- 엔트리포인트 설정:
--entrypoint git
:git
커맨드를 컨테이너의 엔트리포인트로 설정합니다.- 이제 이 컨테이너는 시작할 때 디폴트로
git
을 실행합니다.
- 커밋:
- 새로운 상태를
ubuntu-git
이미지로 다시 저장합니다.
- 새로운 상태를
- 임시 컨테이너 제거:
cmd-git
컨테이너를 삭제합니다.
6. 엔트리포인트가 설정된 이미지 실행
docker container run --name cmd-git ubuntu-git version
실행 결과:
- 이제
ubuntu-git
이미지에서version
아규먼트만 입력하면 Git의 버전 정보가 출력됩니다. - 엔트리포인트가
git
으로 설정되어 Git이 디폴트 실행 프로그램이기 때문입니다.
효율성과 사용자 경험
- 기존 방식:
- 사용자가 항상 커맨드를 추가해야 했습니다. 예:
docker run ubuntu-git git version
.
- 사용자가 항상 커맨드를 추가해야 했습니다. 예:
- 엔트리포인트 설정:
- Git을 엔트리포인트로 설정하여 사용자는 Git 관련 커맨드만 추가하면 됩니다. 예:
docker run ubuntu-git version
.
- Git을 엔트리포인트로 설정하여 사용자는 Git 관련 커맨드만 추가하면 됩니다. 예:
추가 설명: 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 |