프로그래밍/도커

[도커] 9. 도커 이미지 만들기

riroan 2022. 1. 3. 01:57

이번시간엔 좀 더 복잡한 이미지를 만들어 Dockerfile 작성을 실습해볼 예정이다.

 

우선 nginx를 이용해 웹 서버를 여는 이미지를 만들어보려고 한다.

FROM ubuntu:20.04

MAINTAINER riroan

LABEL version="0.1"

RUN apt-get update
RUN apt-get install nginx -y
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf

ENTRYPOINT ["nginx"]

EXPOSE 80
docker build --tag mynginx:0.1 .

이렇게 나오면 성공적으로 빌드한 것이다.

 

우선 Step이 8/8에서 끝났는데 이는 레이어가 8개임을 의미한다.

레이어는 대문자 명령어의 개수이기 때문에 8개가 나왔다.

 

또한 5번째 명령어에서 설치시 확인하는 부분(y/n)이 나오기 때문에 사용자와의 인터렉션을 방지하기 위해 -y를 붙였다.

 

마지막 줄에 80번 포트를 개방했으므로 실행하면 아래와 같이 성공적으로 나온다.

docker run -d -it -p 80:80 mynginx:0.1

 

여기에서 조금 개선시킬 수 있는지 살펴볼 것이다.

 

우선 MAINTAINER는 deprecated 됐으므로 잘 사용하지 않는다.

대신 LABEL로 바꿔주도록 하자.

 

그리고 RUN하나당 레이어를 하나 생성하기 때문에 이왕이면 레이어 수도 좀 줄이도록 하자.

FROM ubuntu:20.04

LABEL version="0.2" name=riroan

RUN apt-get update && \
    apt-get install nginx -y && \
    echo "\ndaemon off;" >> /etc/nginx/nginx.conf

ENTRYPOINT ["nginx"]

EXPOSE 80

명령어 수가 줄어드니 레이어 수도 줄어들었다.

실행시키면 아까와 같은 결과가 나올것이다.

 

이미지를 만들 때 이름(REPOSITORY)을 잘 정해야 한다.

아래와 같은 경우 댕글링이미지(<none>)가 생성된다.

1. 이름을 정하지 않은 경우

2. 이미 존재하는 이름을 사용한 경우 (원래 있던 이미지가 댕글링 이미지로 된다.)

3. 이미지 빌드에 실패한경우(빌드하는도중 스크립트 수정 저장시 발생하기도 한다.)