Docker 이미지 직접 만들기
- Dockerhub에 이미 다른 사람들이 만들어 놓은것을 이용
- 직접 도커 이미지를 만들어서 사용
- 직접 만든것을 Dockerhub에 업로드 할 수도 있음
도커 이미지 생성하는 순서
- Docker file 작성
- Docker file이란 Docker Image를 만들기 위한 설정파일
- 컨테이너가 어떻게 행동해야 하는지에 대한 설정을 정의해줌
- 도커 클라이언트에 도커 파일 전달
- 도커 서버에 요청
- 도커 클라이언트에 전달된 모든 중요한 작업들을 진행함
- 이미지 생성
Docker file 만들기
Docker file 이란
- 도커 이미지를 만들기 위한 설정 파일
- 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의해줌
도커 파일 만드는 순서 (도커 이미지가 필요한 것이 무엇인지를 생각하기)
- 베이스 이미지를 명시해준다 [파일 스냅샷에 해당]
- 추가적으로 필요한 파일을 다운받기 위한 몇가지 명령어를 명시 [파일 스냅샷에 해당]
- 컨테이너 시작시 실행될 명령어를 명시해줌 [시작 명령어에 해당]
베이스 이미지란?
- 도커 이미지는 여러개의 레이어로 되어있음
- 베이스 이미지는 이 이미지의 기반이 되는 부분
- 레이어는 중간 단계의 이미지 👉 간단히 OS라고 생각해도 됨
- 베이스 이미지를 쌓고 그 위에 여러 레이어(ex. nginx…) 를 쌓음
실습
- FROM
- 이미지 생성시, 기반이 되는 이미지 레이어
- <이미지 이름="">:<테그> 형식으로 작성 테그>이미지>
- 테그를 안붙이면 자동적으로 가장 최신것으로 다운받음
- ex) ubuntu:14.04
- RUN
- 도커이미지가 생성되기 전에 수행할 쉘 명령어
- CMD
- 컨테이너가 시작되었을 때, 실행할 실행 파일 또는 쉘 스크립트
- 해당 명령어는 Dockerfile내 1회만 쓸 수 있음
실행 시, $ docker run -it <이미지 id>
#베이스 이미지 명시
FROM baseImage
#추가적으로 필요한 파일들을 다운로드함
RUN commnad
#컨테이너 시작시 실행될 명령어를 명시
CMD [“executalbe”]
도커 파일로 이미지 생성하기
$ docker build ./ || .
- Buile 명령어
- 해당 디렉토리 내에서 dockerfile이라는 파일을 찾아 도커 클라이언트에 전달시켜줌
빌드 Step
- alpine 이미지 생성
- 리눅스 중에서 가벼운 편
- 임시 컨테이너 생성
- 하드 디스크에 파일 시스템 스냅샷 추가
- 각종 명령어 또는 레이어를 임시컨테이너에 담음
- 임시 컨테이너로 이미지 생성
- 베이스 이미지에서 각종 레이어가 쌓이고 완료가 되면 임시 컨테이너가 완성
- 임시 컨테이너 기반의 새로운 이미지가 만들어 짐
- 임시 컨테이너가 삭제
정리
- 베이스 이미지에서 다른 종속성이나 새로운 커맨드를 추가할 때는 임시 컨테이너를 만든 후, 그 컨테이너를 토대로 새로운 이미지를 만듬
- 그리고 임시 컨테이너는 삭제
빌드 시 컨테이너에 이름주기
$ docker build -t <name> ./
- ex)
$ docker build -t victoriakk/hello:latest ./
- -t 이후에 이름을 지어주면 됨
- 일반적으로 docker -t를 사용하여 정할때,
저장소/프로젝트이름:버전
으로 지음