Docker 빌드하기

2023. 5. 6. 19:20리눅스 실제 사용 팁/Docker

작성일 : 2020. 10. 25.

 

1. 기본 이미지를 준비한다. 도커 허브에서 준비된 이미지를 찾을 수 있다.

리눅스 배포판, DBMS, Tomcat, ... 등등 이미 만들어놓은 이미지를 활용할 수 있다.

 

웹으로 접속해서 확인하거나,

 

hub.docker.com/search?q=&type=image

 

Docker Hub

 

hub.docker.com

 

docker search [검색어] 명령으로 찾을 수도 있다. (자세한 것은 `docker search --help`  참고)

 

본 예에서는 'debian' 이미지의 최신 버전을 기본 이미지로 활용할 것이다.

 

2. 기본 이미지에 입힐 나만의 준비물을 마련한다. 쉽게 말해 커스터마이징할 대상을 말이다.

 

여기서는 AZUL (azul.com) 에서 배포하는 OpenJDK 버전인 zulu15 이미지와 Dockerfile 을 준비하였다.

그리고 bashrc 파일: (사실은 JAVA_HOME 환경변수 설정라인만 넣었지만)

Dockerfile 에는 빌드 시 실행할 명령이 들어있다.

이를테면, 준비된 zulu15 를 /opt 에 복사한 후, 압축을 풀고 JDK_HOME 및 PATH 환경변수를 설정하는 것이다.

 

(그렇게 빌드한 이미지로부터 컨테이너를 띄우면 JDK 개발환경이 마련된 환경이 되는 것이다.)

도커 컨테이너를 실행하면 root (관리자)로 실행되는데 root 로그인 쉘을 실행하는 게 아니라서 /root/.profile 또는 /root/.bashrc 에 경로 설정을 해도 읽어들이지 않는다. 대신 /etc/bash.bashrc 에 지정하면 읽는다. (이 설정은 데비안 배포판에 한정된 기능일 수도 있다)

 

<Dockerfile 매크로? 용어>

 

FROM 기본 이미지명를 지정한다; 이미지명 뒤에 ":" 과 더불어 버전 및 버전에 해당하는 TAG를 지정할 수 있다. (이 부분은 해당 이미지에 대해 설명하고 있는 웹페이지를 참고하기 바란다). 'latest' 를 붙이게 되면 가장 최근에 업데이트된 버전을 가져온다.

 

MAINTAINER 이미지를 만든 사람 또는 단체를 기록한다.

 

COPY 첫 번째 인자는 현재 작업 중인 경로이고 두 번째 인자는 생성될 이미지 내에서 첫 번째 인자에 해당하는 리소스가 복사될 경로이다.

 

WORKDIR bash 쉘의 cd 명령에 해당한다. 이미지 (어쩌면 메모리에 올려진 베이스 이미지의 컨테이너)에서 실행되는 쉘에서 작업 디렉토리를 변경한다.

 

RUN 딱 봐도 실행이다. 위에서 COPY, WORKDIR 가 도커 자체 명령에 해당한다면 RUN 뒤에 오는 커맨드라인은 컨테이너 내에서 실행되는 것들이다.

 

3. 빌드를 실행한다.

 

docker build -t '빌드명:태그' "Dockerfile 이 들어있는 경로(즉, 작업 디렉토리)" 를 실행한다.

 

이미지 빌드가 성공적으로 이루어졌다.

4. 빌드 결과 조회

빌드 완료 시 파일이 생성되지 않고 곧바로 로컬 도커 저장소에 올라간다.

docker images 명령으로 현재 로컬 저장소에 설치된 이미지 목록을 조회 할 수 있다.

 

이것으로 추측하건데, 도커 이미지를 컨테이너로 실행할 때 호스트 OS 에서 컨테이너의 파일시스템과 파일을 주고 받을 수 있도록 마운트 포인트를 지정할 수 있는데 이미지를 빌드할 때 베이스 이미지를 다운로드 후, 띄운 컨테이너에 Dockerfile 에서 지정한 리소스를 복사한 후에 이미지명을 바꿔서 구운 후에, 컨테이너를 종료하는 작업을 거치는 것으로 보인다.

 

 

'리눅스 실제 사용 팁 > Docker' 카테고리의 다른 글

Dockerfile  (0) 2023.08.01
Docker Compose (번역)  (0) 2023.05.06
Docker 외부 파일을 가져오기 (Import)  (0) 2023.05.06
Docker 이미지를 파일로 내보내기 (Export)  (0) 2023.05.06
Docker  (0) 2023.05.06