본문 바로가기
프로그래밍/Backend Roadmaps

[Docker] 도커 싱글 컨테이너 실습

by 코딩중독 2024. 2. 14.

목차

    도커

    컨테이너를 사용해 응용프로그램을 쉽게 배포하고 실행할 수 있도록 설계된 도구, 컨테이너 기반의 오픈소스 가상화 플랫폼이다

    애플리케이션 환경에 구애받지 않고 손쉽게 배포 관리를 도와준다.

    서버마다 동일한 환경을 구성해 주기 때문에 auto scaling에 유리하다.

    한 개의 서버에서 한개의 애플리케이션만 운영하는 하이퍼바이저 기반 가상화보다 가볍기 때문에 성능에도 유리하다.

     

    컨테이너

    도커 이미지를 독립된 공간에서 실행할 수 있도록 해주는 기술

     

    도커 이미지

    애플리케이션의 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 애플리케이션을 실행할 때 필요한 모든 것을 포함하는 패키지.

    이미지는 도커허브를 통해 버전 관리가 가능하다.

     

    도커 파일 명령어

    FROM

    새로운 이미지를 생성할 때 사용할 이미지를 지정 (이미지 이름:태그)

     

    ARG

    이미지 빌드 시점에서 사용할 변수 지정

     

    COPY

    호스트에 있는 파일이나 디렉터리를 Docker 이미지의 파일 시스템으로 복사

     

    ENV

    컨테이너에서 사용할 환경 변수 지정

     

    ENTRYPOINT

    컨테이너가 실행되었을 때 항상 실행되어야 하는 커맨드 지정

     

    FROM openjdk:17
    ARG JAR_FILE=build/libs/app.jar
    COPY ${JAR_FILE} ./app.jar
    ENV TZ=Asia/Seoul
    ENTRYPOINT ["java", "-jar", "./app.jar"]

     

    jar 파일 빌드

    인텔리제이 build.gradle 파일에서 파일명 지정

    bootJar {
        archiveFileName = 'app.jar'
    }

     

    인텔리제이 Terminal에서 실행 (Windows 기준)

    ./gradlew.bat build
    
    BUILD SUCCESSFUL in 10s
    1 actionable task: 1 executed
    PS D:\fcspring\pharmacy> ./gradlew.bat build
    Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
    
    You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    
    For more on this, please refer to https://docs.gradle.org/8.5/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

     

    도커 이미지 파일 생성과 실행

    jar 파일 실행 테스트

    java -jar build/libs/app.jar

     

    Ctrl + C로 종료

     

    // 태그 옵션 도커허브 아이디/도커 이미지명 도커이미지 위치, 현재 위치 .
    docker build -t [docker-hub id]/[docker image name] .

     

    도커 이미지 확인

    docker images

     

    도커 이미지 실행

    docker run [docker-hub id]/[docker image name] -p [호스트포트]:[도커포트]

     

    실행 중인 도커 확인

    docker ps

     

    도커 컨테이너 내부 접속

    docker exec -it [CONTAINER-ID] bash