Docker

[Docker] 6-4. 컨테이너로 이미지 만들기

patrick-star 2023. 5. 28. 23:36
728x90

이번 절에서는 컨테이너로 이미지를 만드는 방법에 대해 살펴본다.
이 방법은 컨테이너를 다른 환경에서 복제하기 위해 사용되며 서버 엔지니어에게는 필수적이다.

컨테이너를 이미지로 만드는 방법

지금까지는 공식적으로 제공되는 이미지만을 사용했다.
하지만, 이미 존재하는 컨테이너를 이용하면 누구나 쉽게 이미지를 만들 수 있다.(이미지를 처음부터 만드는 건 어렵다)

컨테이너를 가지고 나만의 이미지를 만들어서 똑같은 구성의 컨테이너를 대량으로 만들 수 있고
그렇게 만들어낸 컨테이너들을 다른 컴퓨터 또는 서버에 이동시킬 수도 있다.

이동시킨다는 의미는... 실제로 컨테이너를 다른 컴퓨터 또는 서버에 복사한다기보다는 

원하는 컨테이너를 이미지로 바꾸고 그 이미지를 가지고 컨테이너를 만드는 걸 '이동한다'라고 표현한다.

이미지를 만드는 방법은 2가지가 있다.

① commit 커맨드로 컨테이너를 이미지로 변환

컨테이너가 있다면... commit 커맨드를 통해 이미지를 만들면 된다. 그렇기 때문에 당연히 컨테이너가 이미 존재해야 한다.

docker commit 컨테이너이름 새로운이미지이름 

② Dockerfile 스크립트로 이미지 만들기

Dockerfile 스크립트를 작성하고 이 스크립트를 빌드(build)해서 이미지를 만드는 방법

Dockerfile은 이미지를 생성하기 위해서 존재하는 파일이고 여기에 토대가 되는 이미지(base image)나 실행할 명령어 등을 작성한다.

Dockerfile은 호스트 컴퓨터의 이미지 재료가 들어있는 폴더에 위치시킨다.
해당 폴더에는 컨테이너에 넣을 각종 파일들을 함께 두면 된다. 실제 컨테이너를 만들 필요는 없다.

docker build -t 생성할이미지이름 재료_폴더_경로

관련 공식문서

많이 사용하는 instruction은 FROM, COPY, RUN 정도가 있다. 물론 필요한 게 있다면 더 알아두면 좋다.

FROM 토대가_되는_이미지이름
COPY 원본경로 대상경로
RUN 리눅스_명령어 

... 

이미지를 옮기는 방법

컨테이너를 옮긴다는 건
해당 컨테이너를 이미지로 변환해서 그 이미지를 가지고 새 컨테이너를 만드는 방식을 의미한다.

이미지 역시 이미지 자체를 옮기거나 복사할 수 없다.

그래서 도커 레지스트리를 이용하거나 save 커맨드를 사용해서 tar 포맷으로 도커 엔진의 관리 영역 밖으로 내보내야 한다.

docker save -o 파일이름.tar 이미지이름 

파일은 호스트 컴퓨터의 파일 시스템에 생성된다. 다시 도커 엔진 관리 영역으로 가져오려면 load 커맨드를 쓰면 된다.

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스