본문 바로가기

Docker 시작하기 - RestAPI편

1) Docker 시작하기

반응형

Docker란 뭘까?  Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼 이라고 한다.

컨테이너 기반?? 컨테이너라 함은 우리가 흔히 말하는 운송수단으로 물건을 실어 나를때 쓰는 커다란 상자를 말하는것

 

서버에서 컨테이너라고 하는것도 비슷하게 다양한 프로그램을 독립적으로 담아 놓고 배포하고 관리할 수 있는 단위라고 생각하면 되는것 같다.

 

컨테이는 가상화 기술의 하나라고한다. 그렇다 기존에도  VMWare 나  VirtualBox 같은 가상화 기술이 있었다.

 

Docker와 기존 가상화 기술의 차이점은 아래 그림과 같다.

기존 가상화방식(왼쪽)   Docker 방식(오른쪽)

그림에서 보면 Docker는 App를 구동하기 위한 Bins와 Libs 만 가지고 Docker Engine 위에서 구동하는 모습을 볼 수 있다. 이것이 가능하게 한것은 리눅스 컨테이너  기술을 이용한 것이라고 한다.

 

Docker에 대한 개념은 여기까지하고 직접 어떤식으로 동작하는지 보면서 이해하는것이 빠를것 같다.

 

먼저 React 편에서 BackEnd ( JWT 기반의 Rest API ) 로 구현한 springboot 프로젝트를 docker image로 만들어서 서버에 적용하는것을 해보도록 하자. 

 

먼저 docker를 적용할 서버를 준비 하자 . GCP의 VM인스턴스를 하나 만들자.

 

 

 

위 처럼 docker-server라는 instance를 하나 만들었다. 

해당 서버에 접속해서 우분투 리눅스 서버에 필요한 package를 설치한다.

 

1. Docker 다운을 위해 필요한 Package설치

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

각 설치된 package에 대한 설명

  • apt-transport-https : 패키지 관리자가 https를 통해 데이터 및 패키지에 접근할 수 있도록 한다.
  • ca-certificates : ca-certificate는 certificate authority에서 발행되는 디지털 서명. SSL 인증서의 PEM 파일이 포함되어 있어 SSL 기반 앱이 SSL 연결이 되어있는지 확인할 수 있다.
  • curl : 특정 웹사이트에서 데이터를 다운로드 받을 때 사용
  • software-properties-common : *PPA를 추가하거나 제거할 때 사용한다.

2. curl 명령어로 도커 다운받기

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
  • f : HTTP 요청 헤더의 contentType을 multipart/form-data로 보낸다.
  • s : 진행 과정이나 에러 정보를 보여주지 않는다.(–silent)
  • S : SSL 인증과 관련있다고 들었는데, 정확히 아시는 분 있다면 댓글 부탁!
  • L : 서버에서 301, 302 응답이 오면 redirection URL로 따라간다.
  • apt-key : apt가 패키지를 인증할 때 사용하는 키 리스트를 관리한다. 이 키를 사용해 인증된 패키지는 신뢰할 수 있는 것으로 간주한다. add 명령어는 키 리스트에 새로운 키를 추가하겠다는 의미이다.

3. repository에 경로 추가하기

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update

 

4. 도커 설치하기

apt-cache policy docker-ce
sudo apt install docker-ce
  • apt-cache : 우분투에서 소프트웨어나 라이브러리를 터미널에서 검색한다. ex) apt-cache search 검색어
  • policy : 내가 어떤 저장소를 설치했는지 보여준다. 저장소를 설치했는지 안했는지 기억이 안날 때 유용하다!

5. 확인하기

sudo systemctl status docker
  • systemctl : 리눅스에서 서비스를 등록, 삭제(mask, unmask) / 활성화, 비활성화(enable, disable) / 시작, 중지, 재시작(start, stop, restart) / 상태 확인(status) / 서비스 확인(list-units, list-unit-files)을 할 수 있는 명령어

이제 Docker 가 잘 설치 되었는지 확인하기 위해서 docker hub에 올라가 있는 hellow world 이미를 다운 받는다.

 

1. Hello-World 이미지 파일 다운

sudo docker pull hello-world

 

2. 이미지 list 확인

sudo docker images

 

3. Docker Image 실행

sudo docker run hello-world

 

이미지가 잘 실행되는것을 확인 할 수 있다. 

 

다음은 실제 구현한 SpringBoot를 이용한 JWT 인증 REST API 서버를 Docker를 이용해서 실행해 보자.

 

참조 : https://roseline124.github.io/kuberdocker/2019/07/17/docker-study02.html