가희의자기개발블로그

Docker 개념 본문

백엔드/Docker

Docker 개념

가희gahui 2020. 11. 14. 14:47
반응형

회사에서 Docker를 이용한다. Docker에 D도 못들어본 나는 동공지진.. 가슴이 막 두근 거렸지만 모르면 공부하면 되니까...(남은 인생에서 공부해야할꺼 오조오억개..)

 

회사 출퇴근 3시간을 다니며 Docker 강의를 들었는데 개념을 익히는데 도움이 많이된 강의 내용을 정리해 보고자한다.

 

우선 Docker가 왜 필요한지에대해 이해하기 위해서는 서버에대한 왕왕왕기초적인 내용을 이해하는 것이 중요하다.

 

1. 서버

- On-premises 

큰 회사에서는 서버실이 따로 있어서 서버를 따로 구축해 놓는 경우가 많다. 이러한 것을 On-premises라고 한다.

아래 그림과 같이 Intranet이라는 내부망에 서버들을 구축해 놓는다. 이렇게 서버를 구축해 놓았을 경우 외부로 부터 요청을 받을 수도 없고 밖으로 내보낼 수도 없다. 외부로 부터 요청을 받기 위해서는 Firewall이라는 방화벽을 통해 Port를 열어 놓고 해당 Port를 가진 요청만 들어갈 수 있도록 허용한다는 개념이다. 

 

 

- Cloud Platform

회사 자체의 서버를 구축해 놓는 경우 보안에 아주 좋지만 작은 회사들이나 굳이 서버실을 두고 서버를 자체 구축할 필요가 없는 곳들은 비용적으로 많은 손해가 아닐 수 없다. 그래서 나온 개념이 Cloud Platform이다. 큰 예로 AWS를 들 수 있는데 하나의 서버를 쪼개 A.com이라는 url을 가진 회사가 쓰고 다른 부분은 B.com이라는 url을 가진 회사가 쓴다는 개념이다. 

 

-Orchestration

위에서 설명한것처럼 서버는 하드웨어적으로 나눠진것도 있지만, DB서버 WebServer를 따로 놓는 경우가 있다. 

보통 DB서버는 많이 바쁘기 때문에 (물론,경우에 따라 Web Server가 더 바쁜 경우도 있지만) 이 서버들을 따로 놓는 경우 서로의 자원을 침해하지 않는다는 장점이 있다. 그렇게 되면 db가 쓰는 자원만큼 서버를 구성할 수도 was가 쓰는 자원만큼 서버를 구성할 수 있다. 

 

DB서버와 WAS서버를 따로 구축하고 싶은데 물리적 서버가 하나밖에 없는경우는 서버를 나눠서 사용하면 되지만 이용자가 많아지면서 이런 서버들을 더 여러개 놔야 하는 경우가 생긴다. 이럴때 사용되는 Orchestration이라는 개념이다. 여러대의 서버를 동시에 운영하는 경우에 대한 그림은 아래와 같다. 

 

위와 같이 서버를 구성하게 되면 이용자가 어느 서버에 들어가야 할지 모른다. 사용자를 제일 한가한 서버에 보내 주는 걸 로드밸런싱이라고한다. 그리고 이러한 장비를 L3, L4, L7라고 한다. 숫자가 올라갈 수로 지원해주는 기능이 더 많고 고가이다. L4같은 경우 D-DOS 특정 요청이 N번 반복도면 그 요청을 차단하게 해주는걸 지원한다.

 

어쨌든, 이렇게 서버 한대를 나눠쓰고 오케스트레이션 해줘야하는 Needs때문에 Docker가 탄생하게 된것이다. 

 

Docker가 가상버신이라고 생각할 수도 있는데, 가상머신은 OS를 하나 만든다는 개념이기때문에 조금 다르다. Docker의 개념자체는 Linux Container에서 왔고 결국 하나의 프로세스라고 이해하면 된다.

 

 

2. Docker Terms

- Docker Container

 

Window위에 Docker가 올라가서 Docker위에 여러개의 Container가 올라간다. 호스트 위에 있다보니까 드라이버나 라이브러리 아이피를 공유한다. 

 

- Docker Image

구성된 각각의 컨테이너는 이미지로 떠서 저장한다. 도커에서 이미지를 하나 떠놓은다면 리눅스 기반으로 돌기때문에 다른 환경으로 가도 구동이 된다. 

 

Image Build(make) / Shiop (Share) 가능 -

 

- Docker Pricipal 

Namespace : 

1. PI 

2. Network Namespace 

 

반응형
Comments