이번시간엔 좀 더 복잡한 이미지를 만들어 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. 이미지 빌드에 실패한경우(빌드하는도중 스크립트 수정 저장시 발생하기도 한다.)
'프로그래밍 > 도커' 카테고리의 다른 글
[도커] 11. 환경변수 (0) | 2022.08.19 |
---|---|
[도커] 10. 도커 네트워크 (3) | 2022.08.15 |
[도커] 8. Dockerfile 요소 (0) | 2022.01.02 |
[도커] 7. 가장 간단한 이미지 만들기 (0) | 2022.01.01 |
[도커] special. VScode에서 ssh 접속하기 (0) | 2021.12.31 |