도커 이미지 생성 자동화하기

haerim·2024년 3월 23일

공부를 합시다

목록 보기
6/7

이번에는 도커 이미지 생성을 자동화해보기로 했습니다.

그 전까지는 수동으로 했었으니까요!

필요한 것은 Dockerfile과 이미지 빌드 명령어 입니다.

Dockerfile

  • 계층 구조를 이용해 도커 이미지를 만드느 절차를 기술하는 파일(텍스트)입니다.
  • 문법
    • FROM [--platform=<platform>] <image> [AS <name>]
    • RUN <command>
    • ENTRYPOINT ["executable", "pram1", "pram2"]

이미지 빌드 명령어

  • docker build [OPTION] PATH|URL|-

도커파일 준비하기


# 베이스가 될 이미지를 가져옵니다.
FROM httpd:latest

# 이 명령어를 실행합니다.
# index.html을 echo 뒤에 있는 내용으로 치환합니다.
RUN echo "<html><body><h1>Docker build Test</h1></body></html>" > /usr/local/apache2/htdocs/index.html

# 시작점은 여기서 시작합니다.
# 컨테이너가 실행될 때 서버가 구동될 수 있도록 합니다.
ENTRYPOINT /user/local/bin/httpd-foreground

이미지 빌드하기

도커파일이 있는 위치에서 빌드를 시작합니다.

docker build -t my_httpd:0.2 .

0.1을 만들어봤으니까 이번에는 0.2라고 붙여봤습니다. 현재 디렉토리 내에서 동작해야 하니까 현재 디렉토리 내임을 의미하는 .을 붙입니다.

새로운 도커 이미지가 빌드되었습니다.

확인해 보니 0.2 버전이 생성되었음을 확인할 수 있었습니다.

빌드한 이미지로 컨테이너 실행해보기

그럼 빌드가 잘 되었으니 컨테이너로 실행이 잘 되는지도 확인해 보겠습니다.

maestro@jeonghaelim-ui-MacBookAir example % docker run -p 9000:80 my_httpd:0.2                 
/bin/sh: 1: /user/local/bin/httpd-foreground: not found

어...? 뭐가 문제지...?

하고 확인해 보니 제가 오타를 냈었네요 ㅠㅠ 다시 빌드합니다.

빌드할 때는 똑같은 이름으로 빌드가 가능합니다. (아마도 오버라이트 되는 것 같습니다.)

entrypoint로 지정했던 httpd-foreground가 실행이 되면서 서버도 동작하고 있는 걸 확인할 수 있었습니다.

새로고침을 해보니 제가 치환했던 index.html 파일로 제대로 나오고 있는 걸 확인할 수 있었습니다. (와!)

내친 김에 레지스트리에도 올려보자

도커에 올리기 위해 로그인을 합니다.

더 안전하게 로그인하고 싶으면 access token 만들라는 거 같은데 일단 스루합니다...

docker tag my_httpd:0.2 jeonghaerim/my_httpd:0.2

올릴 도커 이미지에 태그를 붙입니다.

그리고 docker push를 통해 docker hub에 올립니다.

로그인이 잘 되어 있는 상태이기 때문에 별 문제 없이 올라갔습니다.

도커 허브 내에서도 제가 올린 이미지가 있음을 확인할 수 있었습니다.

로컬에서 도커 이미지도 전부 지우고 다시 받아 보니 잘 받고 서버까지 잘 실행하고 있음을 확인할 수 있었습니다.

느낀 점

dockerfile을 잘 작성하고 사용하면 이미지도 쉽게 빌드할 수 있고 컨테이너도 쉽게 만들 수 있다는 걸 알 수 있었습니다!

profile
멋진 프론트엔드 개발자가 되고 싶은

0개의 댓글