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/
설치가 잘 되었으면 다시 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를 사용하는데 필요한 명령어들이다.
컨테이너 목록 확인: 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 |