Dev/DevOps, Infra

[Docker] 도커 이미지 생성

HJChung 2021. 1. 28. 13:23

도커 이미지란 

도커 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 가지는 소프트웨어 패키지이다. 

참고한 한 블로그에서는 이미지를 붕어빵 도면, 컨테이너는 이 붕어빵 도면을 통해 만든 붕어빵 틀로 비유한다. 
그러면 이 붕어빵 틀로 만든 붕어빵들은 어떤 환경이든, 우리나라에서 만들어지든, 미국에서 만들어지든,.. 같은 규격으로 동일하게 만들어질 것이다. 

 

이러한 도커 이미지는 [Docker] 도커의 기본 이해에서 <도커 사용의 흐름> 에서 적었듯이 이미 다른 사람이 만들어 놓은 이미지를 도커 허브에서 pull받아서 이용할 수도 있고, 직접 도커 이미지를 만들 수도 있고, 이 직접 만든 이미지를 도커 허브에 업로드 할 수도 있다. 

나만의 도커 이미지를 어떻게 생성할 수 있을까?

1. 우선 도커 이미지를 만들기 위한 설정 파일인 Dockerfile을 작성한다. 여기서 컨테이너가 어떻게 행동해야하는지 설정들을 정의해 줄 수 있다. 

2. 그 다음 Dockerfile에 입력된 것들이 도커 클라이언트에 전달된다. 

3. 도커 클라이언트에 전달된 내용이 도커 서버에 전달되어서 이미지가 생성된다.

1. Dockerfile 작성

 ' 1.우선 도커 이미지를 만들기 위한 설정 파일인 Dockerfile을 작성한다. 여기서 컨테이너가 어떻게 행동해야하는지 설정들을 정의해 줄 수 있다.' 에 해당한다. 

그렇다면 만들고 싶은 이미지에 무엇이 필요한지를 보고 그것들을 정의해주면 된다.

1) 베이스 이미지를 명시 (파일 스냅샷에 해당)

#Dockerfile
FROM [baseImage]

도커 이미지는 layer별로 구성이 되어있고, 도커 이미지는 베이스 이미지 layer를 기반으로 필요한 어플리케이션 및 라이브러리 layer등을 포함시킨 것을 의미한다. 

출처: [Docker] 도커 이미지란, 이미지와 컨테이너 간의 관계

2) 추가적으로 필요한 파일을 다운받기 위한 몇가지 명령어를 명시 (파일 스냅샷에 해당)

#Dockerfile
RUN [command]

3) 컨테이너 시작시 실행될 명령어를 명시해줌 [시작 명령어에 해당]

#Dockerfile
CMD [["executable"]]

 

2. Dockerfile로 도커 이미지 생성

' 2. 그 다음 Dockerfile에 입력된 것들이 도커 클라이언트에 전달된다.

3. 도커 클라이언트에 전달된 내용이 도커 서버에 전달되어서 이미지가 생성된다. '

단계에 해당한다. 

 

이미지를 생성해주기 위해서는 Dockerfile이 도커 클라이언트로 전달되어 도커 서버로 요청되어야하는데, 그러기 위해서는 build를 해주어야 하고, 이는 해당 디렉토리(./(또는 .)는 현재 디렉토리를 말함) 내에서 dockerfile이라는 파일을 찾아서 도커 클라이언트에 전달해준다. 

$ docker build ./
또는
$ docker build .

 

 

 

reference

[Docker] 도커 이미지란, 이미지와 컨테이너 간의 관계
도커이미지 직접 만들기