베이스 이미지 만들어보기

정민교·2024년 5월 11일
0

Docker

목록 보기
8/10

📒목표

docker container commit 명령을 사용하여 수동으로 새 이미지 레이어를 만들어보며, 작동 원리 이해하기(일반적으로 이미지를 만들 때는 Dockerfile을 사용)

📒베이스 이미지 만들기

ubuntu 컨테이너 실행

docker run --name=base-container -ti ubuntu

컨테이너 내부에 node.js 설치하기

apt update && apt install -y nodejs

이 명령어를 실행하면 Node가 컨테이너 내부에 다운로드되고 설치됩니다. 유니언 파일 시스템의 맥락에서 이 파일 시스템 변경은 이 컨테이너에 고유한 디렉토리 내에서 발생합니다.

node.js 설치 확인하기

node -v
node -e 'console.log("Hello world!")'

변경 사항을 레이어로 추가하여 새 이미지로 저장하기

Node를 설치했으므로, 변경 사항을 새 이미지 레이어로 저장하고 새 컨테이너를 시작하거나 새 이미지를 빌드할 수 있습니다.

docker container commit -m "Add node" base-container node-base

docker image history node-base

Add node 코멘트가 있는 레이어가 방금 만든 레이어로, 설치된 node.js 포함하고 있습니다.

이 새 이미지를 사용하여 새 컨테이너를 시작

docker run --name=node-base node-base node -e "console.log('Hello again')"

베이스 이미지를 생성했으니 base-container 삭제

docker rm -f base-container

✔️베이스 이미지 정의란

베이스 이미지는 다른 이미지를 빌드하기 위한 기반입니다.

모든 이미지를 기본 이미지로 사용할 수 있지만, 일부 이미지는 애플리케이션의 기반 또는 시작점을 제공하기 위해 의도적으로 빌딩 블록으로 만들어집니다.

즉, 지금 만든 node-base이미지는 node 애플리케이션을 실행하기 위한 기반 이미지로 사용할 수 있는, 빌딩 블록처럼 사용할 수 있습니다.

📒앱 이미지 생성하기

베이스 이미지를 만들었으니 이 이미지를 확장하여 추가 이미지를 빌드해 봅시다.

새로 생성된 node-base 이미지를 사용하여 새 컨테이너 시작하기

docker run --name=app-container -ti node-base

node 프로그램 생성하기

echo 'console.log("Hello from an app")' > app.js
node app.js

컨테이너 변경사항을 새 이미지로 저장하기

docker container commit -c "CMD node app.js" -m "Add app" app-container sample-app

이 명령어는 sample-app이라는 새 이미지를 생성할 뿐만 아니라, 컨테이너를 시작할 때 기본 명령을 설정하기 위해 이미지에 추가 구성을 추가합니다. 이 경우, 자동으로 node app.js를 실행하도록 설정합니다.

  • -c 또는 --change 플래그는 컨테이너를 커밋할 때 이미지에 추가 설정을 적용할 수 있습니다.
    이 설정은 Dockerfile 지시문과 유사한 형태로 제공될 수 있으며, 이미지 생성 시 특정 명령을 실행하거나 환경 변수를 설정하는 등의 작업을 포함할 수 있습니다.

    • -c "CMD node app.js": 이 옵션은 이미지를 사용하여 컨테이너를 시작할 때 기본적으로 실행될 명령을 node app.js로 설정합니다. 즉, 이 이미지에서 컨테이너를 생성하고 시작하면 자동으로 node app.js 명령이 실행됩니다.
  • -m 또는 --message 플래그는 커밋과 관련된 메시지를 이미지에 저장하는 데 사용됩니다.
    버전 관리에서 커밋 메시지를 작성하는 것과 유사한 개념입니다.

    • -m "Add app": 이 옵션은 "Add app"이라는 메시지를 커밋에 포함시켜, 이 커밋이 특정 변경 사항을 포함하고 있음을 명시적으로 나타냅니다.

새 이미지 히스토리 확인하기

docker image history sample-app

새 이미지를 가지고 컨테이너 실행하기

docker run sample-app

📒정리

docker 베이스 이미지를 만드는 법을 알아보고, 레이어가 어떻게 생성되는지 확인하는 과정을 가졌다.

profile
백엔드 개발자

0개의 댓글