티스토리 뷰

블로그를 옮겼습니다.
이곳을 클릭하거나 아래 링크를 참고해주세요!
mingoogle.tistory.com/ ) 




*Docker(도커) 란? 


- 리눅스 컨테이너에 여러 기능들을 추가함으로써 애플리케이션을 컨테이너로서 쉽게 다룰 수 있도록 만든 오픈소스 프로젝트


- Go언어


- 가상머신과 달리 도커 컨테이너는 성능의 손실이 거의없음


1) 가상머신
       대표적인 가상화 툴로는 VMware 나 virtualBox등이 있다. 
       기존 가상머신들은 시스템 자원들을 가상화하고 독립된 공간을 생성하는 작업은 하이퍼바이저를 반드시 거치기 때문에 

일반호스트에 비해 성능손실이 존재한다. 또한, 운영체제를 사용하기 위한 라이브러리나 커널들이 포함되어있기때문에

이미지 크키또한 커지는 단점이 있다.


2) 도커
    - 리눅스 자체기능인 chroot, cgroup , namespace를 사용함으로써 격리된 프로세스 단위의 환경을 만들어 성능손실이 

거의없다.

- 컨테이너에 필요한 커널은 호스트의 커널을 공유하며 컨테이너 안에는 애플리케이션을 구동하기 위한 라이브러리와 

가상머신에 비해 이미지 크기가 작다.


==> 따라서, 도커는 가상머신에 비해 이미지를 만들어 배포하는 시간이 빠르고 성능손실도 적은 장점이 있다.





*도커 설치하기



1) 운영체제가 MAC인 경우
    - https://docs.docker.com/docker-for-mac/install/ 접속

  



- Get Docker for Mac (Stable) or Ger Docker for Mac (Edge) 설치


- 설치 후 docker.dmg파일이 다운로드 된다. 

- docker.dmg파일을 실행하면 응용프로그램에 Docker아이콘이 생성되며,
   Docker아이콘을 클릭하여 실행한다.




- 맥 메뉴창에 도커이미지와 터미널에서 도커버전 입력 시 정보가 뜬다면 정상적으로 도커가 실행된 것이다.








2) 운영체제가 Windows인 경우

- https://docs.docker.com/docker-for-windows/install/ 에서 설치



* MAC/windows 도커를 설치하기 하는 방법 2가지 [ 툴박스 / Dorker for MAC(windows) ]

- MAC/windows 운영체제환경에서 도커를 설치하기위해 '툴박스'나 'Dorker for MAC(windows)' 가 있다.

'툴박스'와 'Dorker for MAC(windows)' 의 차이점은 아래와 같다.


*'툴박스'와 'Dorker for MAC(windows)' 의 차이점*

1)

'툴박스'는 리눅스 가상머신을 생성하여 가상머신안에서 도커를 설치하지만
'Dorker for MAC(windows)는 가상머신을 생성하지 않고 가상화 기술로 리눅스 환경을 만들어 컨테이너를 생성한다.

2)

'툴박스'의 경우 가상머신을 생성한 후 도커를 설치하므로 가상 네트워크가 2개 생성된다. (가상머신 네트워크 / 도커 네트워크) 네트워크가 2개생성되기때문에 외부에서 컨테이너를 접근하기위해서 2중 포트포워딩이 필요하다.
'Dorker for MAC(windows)는 네트워크가 1개(도커 네트워크)이기때문에 외부에서 컨테이너에 접근할때 2중 포트포워딩이 필요하지 않다.





*Docker를 사용하는이유?


-  개인적으로 필자가 도커를 사용하는 것을 추천하는 사람들은 다음과같다.

1. 스타트업이면서 '마이크로서비스'의 개념으로 개발하는 경우.  
   - 회사가 스타트업인경우나 '마이크로 서비스'화로 개발하는 경우
   - '마이크로서비스'로 개발하는 경우 여러가지 기능들을 잘게 쪼개어 하나의 인스턴스(or 프로젝트)에서 해당기능만 

할 수있도록 구현해 놓고 쪼개어 놓은 기능들이 어우러져 하나의 애플리케이션으로 탄생된다. 하지만 리소스가 부족한 곳에서는 서버를 여러개 사놓을 수없을 것이다.


- 현재 회사내의 서비스기획이나 서비스하고 있는 것들이 '마이크로 서비스'와 적합한 서비스들이라면 회사측에서는 비용적인 측면을 고려해볼 수 밖에없다.



1)도커환경(도커엔진)내에서 마이크로서비스화 작업할 수 있다.

2)이미 AWS내에서도 도커를 위한 기능을 제공하고 있다.

3)각각의 컨테이너들은 각자의 개발환경(nodejs/Spring...)등을 구축할 수 있다.

4)모니터링 할 수 있는 툴들도 제공하기 때문에 실무(운영)에 적용하기에 어려움이 없다고 판단된다.








댓글