본문 바로가기
가상화 기술과 관리/Docker

[Docker] image commit, build 방식 차이

by so5663 2023. 12. 23.

 

commit은 이미 사용하고 있는 컨테이너를 이미지로 만드는 것
개인적으로 백업이라고 생각했습니다.

 

build는 도커파일을 통해서 만들고 싶은 이미지를 구체적으로 시간의 순서에 따라서 기록 해서
이미지를 생성하는 느낌 그래서 배포 할때 사용을 하는 것 같습니다.

 

commit 방식

 

먼저 저는 실습을 위해서 httpd 이미지를 받았습니다.

docker pull httpd

 

그러면 다운이 시작되고

docker images

docker images로 잘 다운 되는지 확인 하면 잘 다운 된것을 확인 할 수 있습니다.

 

 

 

docker run -it --name test-web bash

아래 그림처럼 test-web이라는 컨테이너가 생성이 됩니다.

잘만들어 졌으면 exit라는 명령어로 종료하고 호스트로 넘어옵니다.

 

docker ps -a

 

 

위의 명령어를 실행하면

컨테이너가 실행중이 아니여도 확인 할수 있습니다.

 

이제 commit만 하면 됩니다.

이미지 커밋

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

이게 도커 공식 홈페이지에 나와 있는 commit 명령어 입니다. 이런식으로 하면 됩니다.

ex)docker commit test-web egoing:httpd

 

docker images

확인하면

위 그림처럼 egoing이라는 이름으로 잘만들어진 걸 확인 할 수 있습니다.

 

 

build 방식 

Dockerfile을 사용하여 빌드하는 방법

commit 방식 보다는 이 방법을 주로 사용

docker run --name web-server -it ubuntu:20.04

우분투 20.04 버젼으로 web-server 대화형 컨테이너로 실행

 

dockerfile 생성

FROM ubuntu:20.04
Run apt update && apt install -y python3
WORKDIR /var/www/html
# Run echo "Hello, <strong>Docker</strong>" > index.html
COPY ["index.html", "."]
CMD [ "python3", "-u", "-m", "http.server"]
  • FROM : 이미지를 생성할 때 사용할 기반 이미지를 지정한다.
  • RUN : 이미지를 생성할 때 실행할 코드를 지정한다. 예제에서는 패키지를 설치하고 파일 권한을 변경하기 위해 RUN을 사용했다.
  • WORKDIR : 작업 디렉토리를 지정한다. 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다.

도커파일이 있는 경로에서

docker build -t web-server-build .

web-server-build라는 이미지를 빌드한다.

뒤에 . 은 현재 경로를 나타낸다.

이런식으로하면 이미지가 빌드가 된다.

 

docker rm --force web-server;
docker run -p 8888:8000 --name web-server web-server-build;

위에서 미리 만든 web-server는 삭제하고 다시 실행시킨다.

이러면 이미지가 빌드되고 python3가 컨테이너에 다운되고 python3 웹서버가 실행 된다.