컴퓨터 사이언스 (CS)/Docker & Git

03. Docker Image 생성하는 방법

한소희DE 2021. 6. 25. 11:55

이번 시간에, 나는 hello 문구를 출력하는 이미지를 생성하는 방법을 공부해보았다.

 

 

 

 

 

목차

Docker File 만들기

Docker File을 Image로 생성하기


 

 

01. Docker File 만들기

 

Docker Image를 생성하기 위해서는 Image가 될 File, 즉 Docker File을 만들어 주어야 한다.

우리는 생성한 Docker File을 이미지로써 만들어 서버에 저장할 것이다.

 

따라서 가장 먼저, Docker File을 만드는 방법을 알아보도록 하자.

Docker File 생성 순서

1. 베이스이미지를 명시해준다.
2. 추가적으로 필요한 파일을 다운받기 위한 몇가지 명령어를 명시한다.
(위 1,2 두가지는 파일 스냅샷에 해당한다.)

3. 컨테이너 시작시 실행될명령어를 명시해준다.
🔥 베이스 이미지란?

OS라고 이해하면 편하다. 이미지 안에는, 수 많은 레이어들의 집합으로 이뤄져 있다. 
이 레이어에는 베이스 이미지(OS)도 포함되어 있다. 베이스 이미지가 가장 기본이기 때문에, 베이스 이미지를 명시해볼 것이다. (=즉, Docker File에 Base 를 지정해 줄 것이다.)

 

 

 

우선 가장 먼저, Dockerfile이 저장될 공간을 만들어 주어야 하는데, 공간을 만드는 방법은 아래와 같다.

 

1. 바탕화면에 폴더를 생성해준 뒤, VS Code를 이용해 접근한다.
2. 파일 안에, Dockerfile 이라는 이름의 파일을 생성해준다.

 

이제 만들어진 Dockerfile 안에 도커파일을 생성해보겠다.

코드는 아래와 같다.

# 베이스 이미지 명시
FROM baseImage

# 추가적으로 필요한 파일 다운로드 받기
RUN command

# 컨테이너 시작 명령어 지정
CMD ["executable"]

 

 

 

FROM : Dockerfile 내부에, 가장 먼저 베이스 이미지를 명시해준다.

FROM : 이미지 생성 시 기반이 되는 이미지 레이어를 의미

<이미지 이름>:<태그> 형식으로 작성해주는데, 태그를 안 붙이면 가장 최신 것으로 다운이 된다.

ex: ubuntu:14.04

 

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

CMD : 컨테이너가 시작되었을 때 실행할 실행 파일 혹은 셸 스크립트를 의미

주의사항: 하나의 Dockerfile 내 1회만 사용 가능

 

 

 

 

 

 

이를 VSCode에서 실현하면, 위와 같은 그림으로써 만들어진다. 이제 도커파일의 뼈대가 완성된 것이다!

이제 우리가 원하는 명령어 등을 삽입해 이미지를 구체화해볼 것이다.

 

 

3-2. hello를 출력하는 DockerFile 만들기

 

1. 베이스 이미지를 실제 값으로 추가해주기

우리는 alpine을 사용할 것이다. 왜냐면 우리의 이미지가 매우 간단하므로, ubuntu나 centos를 굳이 가져올 필요가 없기 때문이다.

 

2. RUN 수정하기

사실 hello 출력을 위해서는 별도의 다운로드할 것이 없기 때문에, 주석처리를 하도록 하겠다.

 

3. CMD 명시하기

"echo", "hello"로 작성해준다.

 

결과적으로 완성된 도커파일은 아래와 같다.

# 베이스 이미지 명시
FROM alpine

# 추가적으로 필요한 파일 다운로드 받기
# RUN command

# 컨테이너 시작 명령어 지정
CMD ["echo", "hello"]

 

 


 

02. Docker File을 Image로 생성하기

 

이제 생성된 Docker File을 image로 생성해 줄 것인데, 이때는 build 명령어를 사용하여 해결할 수 있다.

 

build 명령어란?
해당 디렉토리 내에서 dockerfile을 찾아서 도커 클라이언트에 전달. ./와 . 모두 현재 디렉토리를 의미하나 ./을 권장.
# 두 가지의 방법이 있다.
docker build ./ 
docker build .

 

 

2-1. Build 명령어를 실행하는 방법

VSCode에서 터미널을 열고 진행해보자. 만약 VSCode가 없으면, 해당 파일 위치에 가서, cmd 창을 열어주면 된다.

 

 

2-2. Image의 이름을 지정해 저장하는 방법

2-1 과 같은 방법을 사용하면, Docker가 임의로 이미지의 이름을 만들어서 저장한다. 이는 거의 해시함수처럼 알파벳과 숫자의 조합으로 생기기 때문에, 기억하기 쉽지 않다.

따라서 이미지의 이름을 기억하기 쉽게 주기 위해서는, 아래와 같은 명령어를 추가해준다.

docker build -t + 도커아이디 + / + 저장소 혹은 프로젝트 이름 + : +버전 + ./

※ 버전은 1.0 이런 식으로 작성해도 좋고, latest 로 써도 된다.

 

지정한 명령어를 cmd에 전달한 결과는 아래 사진과 같다.

 

 

그러면 이제 docker run -it 도커아이디/이미지이름:버전 이라는 명령어를 주어, 실행해보자.

실행하면, 위 사진처럼 hello 라고 정상적으로 잘 출력이 되는 것을 알 수 있다!