키보드워리어

[도커] 도커의 중요성 및 관리 본문

도커&쿠버네티스

[도커] 도커의 중요성 및 관리

꽉 쥔 주먹속에 안경닦이 2023. 6. 18. 23:23
728x90

안녕하세요 【키보드 워리어】 블로그 방문자 여러분, 안경닦이입니다.

오늘은 도커에대해 (docker) 포스팅 해보려고 합니다. 진입장벽이 높다고 알려진 서비스인데요. 주위 개발자 분들께서는 도커를 할 수 있다면 개발 환경을 만드는것이 굉장히 쉬워진다고 입을 모아 이야기합니다. 그건 이미지를  통해서 독립적이고 확장성을 보장해죽시 때문이라고 해요.

도커
도커


도커의 기본 체제는 리눅스 환경 os 입니다. 리눅스 환경을 쓸 수 있다면 (아마존웹서비스 경우 가능합니다.) 사용해보는것도 나쁘지 않겠네요.

 

도커의 중요성

1. 애플리케이션 개발·배포 편해집니다.
2. 운영환경 배포하려면 도커 이미지를 패키지로 만들어 운영서버에 전달하면 되므로 개발 운영 환경의 통합이 가능합니다.
3. 모놀리스 애플리케이션 (깃헙 /board 참고)같이 FE/BE/DB 환경 소규모 프로젝트는 강하게 연결되어 있는데
MSA로 운영할 수 있는 장점이 있습니다.

 


독립성이 좋다는 뜻은 언어에 종속되지 않고 변화에 빠르게 대응 가능하다는 뜻. 빠르고 동시에 환경을 제공합니다.

 

예를 들어 웹 서비스에서 DB컨테이너와 Server컨테이너로 분리할 수있고 서버를 동적으로 늘려서 부하를 분산할 수 있습니다.

 

이건 도커 스웜모드나 쿠버네티스등의 컨테이너 오케스트레이션 플랫폼을 통해 사용하는것이 일반적입니다..

 

 

도커는 이미지와 컨테이너

 

네 도커의 시작과 끝은 이미지와 컨테이너라고 해도 과언이 아닐 것입니다.

 

1. 도커는 이미지 안에 여러 컨테이너를 넣을 수 있다. 컨테이너 하나에 하나의 기능을 합니다.

2. 도커 허브를 통해 이미지를 받아올 수도 있습니다. *docker pull

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Deliver your business through Docker Hub Package and publish apps and plugins as containers in Docker Hub for easy download and deployment by millions of Docker users worldwide.

hub.docker.com

 

3. 도커 컨테이너는 run또는 create 명령어를 통해서 실행 시킵니다.
run pull > create > start > attach 순으로, attach는 컨테이너 내부에서 환경을 실행 시킬 수 있어요.

 


4. 목록 확인

ps -a(중지된것 포함)

 

 

 

컨테이너 빌드 & 배포해보기 *자바 Spring framework 사용

 

만약 Spring framework로 하나의 웹서비스를 배포해보고 싶다고 한다면 어떻게 해볼 수 있을까요?

 

스프링 프레임 워크의 공식 깃허브 페이지에서 petclinic을 pull해와서 써볼게요.

https://github.com/spring-projects/spring-petclinic

 
 
 

GitHub - spring-projects/spring-petclinic: A sample Spring-based application

A sample Spring-based application. Contribute to spring-projects/spring-petclinic development by creating an account on GitHub.

github.com

Spring 어플리케이션이름이 spring-petclinic이며, 프로젝트 상단에 Dockerfile 파일을 생성해주세요.

 

프로젝트는 여러분들의 프로젝트를 사용해보셔도 좋아요. 

어느 환경에 배포해볼까요? aws ec2 환경에서 docker를 설치하셔도 좋아요.

 

 

 

Dockerfile는 아래와 같은 상황입니다. 물론 여러가지 환경 변수를 추가해볼 수도 있습니다.

 

FROM openjdk:17-jdk

COPY build/libs/spring-petclinic*.jar /app/spring-petclinic.jar

CMD ["java","-jar","/app/spring-petclinic.jar"]

 

터미널을 켜보고 프로젝트 상단으로 cd 해서 가봅니다.

 

이미지를 만들고 컨테이너를 실행해보세요.

Docker 이미지를 빌드해서 컨테이너를 생성해보는 거죠. 그리고 도커 허브에 push해보셔도 좋구요.

 

docker build -t spring-petclinic-image . #빌드
docker run -p 8081:8080 spring-petclinic-image #컨테이너 실행  
[내 컴퓨터에서 호출하는 포트번호] : [도커 가상환경 포트]
# -8081에 들어가서 가상환경 8080으로 들어가줘

저는 -p 포트 바인딩을 8081로 줘봤어요. 

참고로 -d 명령어는 백그라운드에서 실행하는 명령어에요! 사용하지 않으면 금방 꺼지게 되요

 

localhost:8081는 컨테이너를 실행시켜주시면 그대로 적용 가능합니다. application-properties에서 port 를 다르게 주거나, 로컬호스트를 바꿀 수도 있어요.

 

 

이후에는 데이터베이스에도 연결해보고, 여러가지로 활용해볼 수 있습니다.

펫클리닉 화면 예시

 

 

 참고하시면 좋은 글 

https://docs.docker.com/engine/reference/builder/

 

Dockerfile reference

 

docs.docker.com

도커 공식 문서 - 도커 만들기

 

 

https://docs.docker.com/docker-hub/

 

Overview

 

docs.docker.com

도커 허브

참고자료: 시작하세요! 도커/쿠버네티스

 

 

 

728x90