Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Kwon's Study Blog !

[Docker] 직접 도커 이미지 만들어 보기 본문

Docker

[Docker] 직접 도커 이미지 만들어 보기

순샤인 2022. 3. 24. 17:33
현재 글은 
https://www.inflearn.com/course/%EB%94%B0%EB%9D%BC%ED%95%98%EB%A9%B0-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%8F%84%EC%BB%A4-ci/dashboard
을 수강하며 정리한 내용입니다. 
문제시 비공개로 처리 하도록 하겠습니다. 
 

따라하며 배우는 도커와 CI환경 - 인프런 | 강의

이 강의를 통해 도커에 대해서 배울 수 있으며, CI 환경을 구성할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

도커 이미지 생성 순서

일단 도커 이미지를 복습해 보겠습니다.

 

도커 이미지 복습

도커 이미지는 컨테이너를 만들기 위해 필요한 설정이나 족속성들을 갖고있는 소프트웨어 패키지 입니다.

도커 이미지는 Dockerhub에 이미 다른 사람들이 만들어 놓은 것을 이용할 수 있으며,

직접 도커 이미지를 만들어서 사용할 수 있고 Dockerhub에 업로드 할 수도 있습니다.

ex) docker create <이미지 이름>  -> 도커 컨테이너들을 생성합니다.

 

그렇다면 음... 

 

도커 이미지는 어떻게 생성할까요???

 

도커 이미지 생성하는 순서

 

 

Dockerfile 만들기

도커 파일(Docker file)이란 ?

도커 이미지를 만들기 위한 설정 파일이며, 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의.

 

도커 파일 만드는 순서

 

1. 베이스 이미지를 명시해줍니다. (파일 스냅샷 해당)

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

3. 컨테이너 시작 시 실행 될 명령어를 명시해줍니다. 

 

베이스 이미지 ?

도커 이미지는 여러개의 레이어로 되어 있습니다.

그중에서 베이스 이미지는 이 이미지의 기반이 되는 부분(레이어)입니다.

 

도커 파일 만들기

 

1. 도커 파일을 만들 폴더(dockerfile-folder)를 하나 만들고 에디터(VS Code)를 이용해 실행합니다.

 

2. dockerfile이란 이름으로 파일을 하나 생성 후

아래와 같이 작성해줍니다.

# 베이스 이미지를 명시해줍니다.
FROM baseImage

# 추가적으로 필요한 파일들을 다운로드 받습니다.
RUN command

# 컨테이너 시작 시 실행 될 명령어를 명시해줍니다.
CMD [ "executable" ]

FROM, RUN, CMD 등은 도커 서버에게 무엇을 하라고 알려주는 것입니다.

 

- FROM : 이미지 생성 시 기반이 되는 이미지 레이어. <이미지 이름><태그>형식으로 작성하며 태그를 안붙이면 자동적으로 가장 최신 것으로 다운 받음. ex) ubuntu:14.04

 

- RUN : 도커 이미지가 생성되기 전에 수행할 쉘 명령어 

 

- CMD : 컨테이너가 시작됐을 때 실행할 실행 파일 혹은 쉘 스크립트. 해당 명령어는 Dockerfile 내 1회만 사용 가능.

 

3. 아래와 같이 수정해줍니다.

# 베이스 이미지를 명시해줍니다.
FROM alpine

# 추가적으로 필요한 파일들을 다운로드 받습니다.
#RUN command

# 컨테이너 시작 시 실행 될 명령어를 명시해줍니다.
CMD [ "echo","hello" ]

베이스 이미지는 ubuntu, centos 등을 써도 되지만 지금 하려는 것 보단 용량이 크니까 alpine 베이스 이미지를 사용합니다.

hello 문자를 출력해주기 위해 echo를 사용해야 하는데 이미 alpine에 echo기능이 있기에 RUN부분은 생략합니다.

 

4. 이렇게 해서 도커 파일 만들기는 완성됐습니다.

 

 

도커 파일로 도커 이미지 만들기

 

이 도커 파일에 입력된 것들이 도커 클라이언트에 전달돼서 도커 서버가 인식하게 하여야 합니다.

그렇게 하기 위해선

터미널을 켜서 docker build ./ 또는 docker build. 를 입력해줍니다.

 

Build 명령어

해당 디렉토리 내에서 dockerfile이라는 파일을 찾아서 도커 클라이언트에 전달시켜 줍니다.

* docker build 뒤에 ./ 와 . 는 둘 다 현재 디렉토리를 가리킵니다.

 

docker build .

* DOCKER_BUILDKIT=0 : 기존 도커버전이 올라가서 빌드로그가 다르게 나올 수 있으므로 이 명령어를 추가해주었습니다.

 

Build 과정 설명

- Step 1/2

alpine 이미지를 가져옵니다. (e9adb53 ~ : 이미지 아이디)

 

- Step 2/2

임시 컨테이너 생성 후 그 컨테이너에 시작 시 사용할 명령어를 포함시킵니다.

그런 후 방금 생성 한 임시 컨테이너를 지우고 새로운 이미지를 만듭니다.(5478696~)

step 2/2
step 2/2

베이스 이미지에서 다른 종속성이나 새로운 커맨드를 추가할 때에는 

임시 컨테이너를 만든 후 그 컨테이너를 토대로 새로운 이미지를 만듭니다.

그리고 그 임시 컨테이너는 지웁니다.

 

 

내가 만든 이미지 - 기억하기 쉬운 이름 주기

 

위에서 만든 이미지를 한번 실행시켜 보겠습니다.

docker run -it 5478696a66be

 

느끼셨겠지만 이미지 아이디가 알아보기 좀 불편하고 너무 길고 쉽지가 않습니다.

 

이런 문제를 위해 도커 이미지에 이름을 주는 방법을 알아보겠습니다.

 

도커에 이름 주는 방법

다시 빌드를 해보겠습니다.

DOCKER_BUILDKIT=0 docker build -t ksoon1985/hello:latest .

만든 이름으로 이미지를 실행시켜 보겠습니다.

docker run -it ksoon1985/hello

 

 

 

이번 글에선 직접 도커 이미지를 만들어 보았습니다.

1. 도커 이미지를 생성하는 순서

2. dockerfile을 만들기

3. 도커 파일로 도커 이미지 만들기

4. 내가 만든 이미지 기억하기 쉬운 주기

 

다음 글에선 도커를 이용해 간단한 Node.js 어플을 만들어 보겠습니다.