ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] 도커와 친해지기 (Build once, run anywhere)
    Docker 2024. 7. 13. 22:24

     

    나는 그동안 스프링 프레임워크만 공부했다. 주변에서 도커,, 도커 할 때마다 그게 대체 뭐지? 짜증이 났다. (모르는 거 나오면 짜증나는 성격) 도커에 대해 알고 싶었지만 너무 어렵게 느껴졌고, 스프링 공부도 벅차서 그동안 미뤄왔었다. 지금은 스프링과 많이 친해졌기 때문에 이제 도커에 대해 공부해보려고 한다. 아래에는 도커에 대해 스스로 검색하고 공부한 내용과 간단한 실습 내용을 담았다.

     

    도커란?

    쉽게 말해, 도커는 애플리케이션을 쉽게 개발하고 배포하며 실행할 수 있도록 설계된 플랫폼이다. 어렵게 말하면, 컨테이너 기반의 가상화 플랫폼이라고 할 수 있다. 여기서 컨테이너란 도커를 이해하는 데 아주 중요한 개념으로, 애플리케이션과 그 실행 환경을 묶어 놓은 것을 말한다. 컨테이너가 애플리케이션이 실행되는 데 필요한 모든 것을 포함하고 있어, 도커를 사용하면 배포된 애플리케이션을 어느 환경에서든지 일관되게 실행할 수 있다.

    주요 개념

    1) Image

    애플리케이션과 그 실행에 필요한 모든 설정이 포함된 스냅샷이라고 할 수 있다. 컨테이너를 만들기 위해 필요하다.

     

    2) Container

    이미지를 기반으로 실행되는 독립된 프로세스이다. 독립된 환경에서 애플리케이션을 실행하므로, 서로 다른 컨테이너는 서로 간섭하지 않는다.

     

    3) Docker Hub

    이미지를 공유하고 배포할 수 있는 중앙 저장소이다. 도커 이미지만을 공유하는 깃 허브라고 생각하면 된다.

     

    4) Dockerfile

    이미지를 만들기 위한 스크립트 파일이다. 이미지 빌드 과정과 필요한 명령어를 기술한다.


    도커 실습

    • 스프링 부트 애플리케이션을 도커 컨테이너에서 실행시켜본다.
    • 도커 공식 홈페이지에서 Docker desktop을 설치했다.

    1. Spring Boot 프로젝트 생성

    • spring-boot-starter-web만 의존성으로 추가했다.
    • resources/static 폴더에 index.html만 추가했다.

    index.html

    <html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
    Hello, docker! 🐳
    </body>
    </html>

     

    2. Dockerfile 작성

    • 루트 디렉토리 아래에 Dockerfile을 작성했다.

    Dockerfile

    # Java 17 런타임 환경을 포함하는 기본 이미지로 시작
    FROM openjdk:17-jdk-slim
    
    # 유지보수자 정보 추가
    LABEL maintainer="jeongseongjin"
    
    # 애플리케이션의 JAR 파일
    ARG JAR_FILE=build/libs/hello-docker-0.0.1-SNAPSHOT.jar
    
    # 애플리케이션의 JAR 파일을 컨테이너에 추가
    COPY ${JAR_FILE} app.jar
    
    # JAR 파일을 실행하는 명령어
    ENTRYPOINT ["java", "-jar", "/app.jar"]

     

    3. 도커 이미지 빌드

    docker build -t [이미지명] .

     

    4. 도커 컨테이너 실행

    docker run -p 8080:8080 [이미지명]

    도커 컨테이너를 실행하자 자주 보던 스프링 부트의 로그들을 터미널에서 확인할 수 있었다.

     

    5. localhost:8080/ 접속

    위 경로로 접속하자 내가 만들어 놓은 index.html을 확인할 수 있었다. 스프링 부트 애플리케이션이 나의 도커 컨테이너에서 정상적으로 작동하고 있는 것이다!


    그동안 도커에 대해 아무것도 알지 못했는데 오늘 공부하면서 조금이나마 알 수 있어서 좋았다. 첫 발을 내딛은 느낌이다. 실습 내용이 정말 간단했기 때문에 어렵지 않게 할 수 있었지만, 파헤쳐보면 분명 더 깊고 어려운 내용들이 있을 것이라 생각한다. 더 열심히 하자!