본문 바로가기
프로젝트/RanDrive

Docker 적용

by HWK 2023. 10. 7.

Docker란?

더보기

도커(Docker)는 컨테이너화 기술을 사용하여 응용 프로그램을 개발, 배포 및 실행하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 응용 프로그램과 해당 종속성을 격리된 환경에서 실행할 수 있게 해주는 경량화된 가상화 기술입니다. 이러한 격리된 환경은 응용 프로그램이 서로 혹은 호스트 시스템과 충돌하지 않고 실행될 수 있도록 보장합니다.

다음은 도커의 주요 구성 요소와 개념에 대한 간단한 설명입니다:

1. 이미지(Image):

도커 이미지는 응용 프로그램과 해당 종속성을 실행할 수 있는 파일 시스템과 실행 환경을 포함하는 패키지입니다. 이미지는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하고 있어 도커 호스트 시스템에서 실행될 수 있습니다. 이미지는 읽기 전용이며, 여러 컨테이너에서 공유될 수 있습니다.

2. 컨테이너(Container):

도커 컨테이너는 이미지를 실행한 실체로, 격리된 환경에서 응용 프로그램이 실행됩니다. 각 컨테이너는 호스트 시스템과 분리되어 있고, 서로 간섭하지 않습니다. 또한 컨테이너는 빠르게 시작되며 가볍습니다.

3. 도커 레지스트리(Docker Registry):

도커 이미지는 도커 레지스트리에 저장됩니다. 공개 레지스트리로는 Docker Hub가 널리 사용되며, 사용자들은 자체적으로 프라이빗 레지스트리를 설정하여 이미지를 저장하고 공유할 수도 있습니다.

4. 도커 컴포즈(Docker Compose):

도커 컴포즈는 여러 컨테이너를 정의하고 관리하기 위한 도구입니다. YAML 파일을 사용하여 응용 프로그램의 서비스, 네트워크 및 볼륨 설정을 정의할 수 있습니다.

도커의 주요 장점:

  • 컨테이너화: 응용 프로그램과 종속성을 격리된 환경에서 실행하여 일관된 동작을 보장합니다.
  • 효율성: 가볍고 빠르게 컨테이너를 시작할 수 있으며, 호스트 시스템의 자원을 효율적으로 사용합니다.
  • 이식성: 컨테이너는 어디서든 실행될 수 있으며, 개발 환경과 프로덕션 환경 간의 차이를 줄입니다.
  • 확장성: 도커 컴포즈 및 오케스트레이션 도구를 사용하여 응용 프로그램을 쉽게 확장할 수 있습니다.

도커는 현대적인 소프트웨어 개발 및 배포에서 널리 사용되며, 개발자들이 응용 프로그램을 더 쉽게 관리하고 배포할 수 있게 해줍니다.

 

가장 먼저 WSL을 다운받아야 한다.

관리자 권한으로 Windows PowerShell을 실행시키고, 

# Windows SubSystem Linux를 활성화시키는 명령어
> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# VirtualMachinePlatform 기능을 활성화시키는 명령어 : WSL2 버전에 필요한 명령어
> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

위와같이 작성하면 기능 사용 설정이 뜨고, 100% 표시가 나올 것이다. 이후에 컴퓨터를 재부팅한다.

 

이후  Microsoft Store를 통해서 Ubuntu를 설치한다. 
username과 password는 까먹지 않게 잘 설정해주고 Docker를 설치한다. 아래 사이트에서 다운받으면 된다.
https://docs.docker.com/desktop/install/windows-install/

 

Install Docker Desktop on Windows

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

설치가 잘 되었으면 다시 Windows PowerShell을 실행시키고,  docker -v 결과에 도커 버전이 잘 뜨면 성공한 것이다.

 

이제 기본적인 Spring boot 프로젝트를 만들어 줄 것이고 다음과 같은 코드를 추가해준

@RestController
@RequestMapping("/")
public class HelloController {
    @GetMapping
    public String hello() {
        return "hello";
    }
}

이후 jar 파일을 생성해야 한다.

Gradle로 들어가서 build 파일에 있는 clean을 눌러주고 이후 build를 눌러준다

이후에 다음과 같은 파일이 만들어 질 것이다.

 

이후 Docker 파일을 생성해야 하는데 가장 중요한 부분이 맨 위에 줄이다.

자신이 어떤 jdk 버전을 쓰는지에 따라 맨 윗줄이 바뀐다. 많은 시간을 소모할 수 있으니 주의하자

Dockerfile는 프로잭트 가장 상단 부분에 만들어 놓는다.

FROM openjdk:17-oracle
WORKDIR /app
COPY build/libs/*.jar app.jar
CMD ["java", "-jar", "app.jar"]

 

다음으로 docker image를 생성한다. 나는 dockertestimage를 이름으로 할 것이다.

idle의 터미널 창을 열고

docker build -t dockertestimg .를 작성해서 도커 이미지를 생성하고,

docker run -p 8080:8080 dockertestimg를 작성해서 8080포트에 바인딩 해주면,

그 결과 도커 컨테이너가 다음과 같이 잘 작동하는 것을 볼 수 있다.

출처: https://yooooonnf.tistory.com/5

 

Docker - 도커에 Spring Boot(Gradle) 구축하기

우리가 도커를 이해해야 하는 이유는 호스팅 서비스를 이용하기 위해서는 특정한 서버 환경에 배포를 해야하기 때문에 그에 따른 설정을 맞춰줘야 됩니다. 하지만 매번 다른 웹서비스를 이용할

yooooonnf.tistory.com

다음은 Docker를 사용하는데 필요한 명령어들이다.

컨테이너 목록 확인: docker ps -a

모든 컨테이너 정지: docker stop $(docker ps -a -q)

모든 컨테이너 삭제: docker rm $(docker ps -a -q)

'프로젝트 > RanDrive' 카테고리의 다른 글

Github Actions를 통한 CI/CD 구축(Docker + EC2)  (0) 2023.10.10
Docker와 EC2 사용한 배포  (0) 2023.10.08
SA 설계 마치기  (0) 2023.10.06
주제 정하기  (1) 2023.10.05
MSA(Microservice Architecture)  (0) 2023.10.05