본문 바로가기

IT 지식

[Docker] Docker란 무엇인가?

예를 들어 

계약건마다 현지로 다니면서 일을하는 사람 A가 있다고 생각하자.

매번 많고 복잡한 장비들을 갖고 다니면서 설치하는데 신물이 났다. 

 

Docker가 이 일들을 간편하게 해결해 줄 수 있다.

이 복잡한 장비들이 설치된 그 상태로, 사본들로 복제한다.

하나하나 할 수도 있고, 장비들이 연결되고 조립된 모습까지 저장할 수 있다.

 

이 사본들을 다른 곳에 가져가서 그대로 설치할 수 있다!

허브라는 곳에 저장해서 클라우드처럼 어디서나 내려받아 쉽게 사용할 수 있게 한다.

 

근데 일을 혼자하진 않잖아요?

같이 다른 작업을 하는 B씨도 작업실을 같이 쓴다. 물건도 겹치고, 전선도 꼬이는데

분리된 작업 공간을 만들면 해결할 수 있다!

컨테이너로 분리되고 필요에따라 연결된 독립된 업무환경을 구축할 수있다.

 

 

 

 

서버를 돌리기 위한 환경을 구축하려면

언어, 웹서버, 데이터베이스, 자동배포 툴 등등 여러가지를 버전 신경써서 다운받고

잘 돌아가게끔 이것저것 설정해줘야한다.

 

근데 서버를 운영하다보면

더 성능 좋은 서버로 옮겨가거나 서버를 더 늘린다거나 하면 그곳들에도 똑같이 추가를 해야한다.

 

또, 같은 서버에 여러 서비스를 돌리는 경우 

각각이 다른 실행환경에서 동작해야할 때 골치아프다.

자바 7으로 기존 서비스를 돌리고있었는데
새로운 서비스가 자바8인 경우!

 

각 요소들이 설치된 모습을 이미지라는 형태에 박제해서 저장한다. 

  • 각 제품마다 공식적으로 제공되는 이미지도 있고,
  • 우리가 직접 만들어 낼 수 있다.

 

Docker이미지들은 Docker hub이라는 곳에 업로드 되어 공유되고, 다운받아질 수 있다. 

그리고, 이미지로 저장된 항목들이  함께 연결되어서 동작하도록 설정된 상태를 명령어 텍스트, 문서형태로

저장할 수 있다. 마치 설치하는 과정을 어디서나 컴퓨터가 재현할 수 있게 녹화하듯이  저장한다. 

 

=> 이 문서만 잘 보관해두면 이 요소들이 언제 어디서든

미리 지정된, 서비스에 필요한 설정대로 도커헙으로부터 받아져서 설치될 수 있다.

 

도커는 이것들을 직접 설치하지 않는다. 

컨테이너라고 불리는 독립된 가상 공간을 만들어 보관한다. 

 

그래서 자바 7, 자바 8을 돌리는 서비스도들도 각각의 컨테이너 안에서 서로 방해하지  않고 돌아갈 수 있다!

 

가상컴퓨팅과 차이점이 있다. 
  • 가상컴퓨팅은 한 물리적 컴퓨터 안에 각각 OS를 돌리는 컴퓨터들이 물리적 자원을 분할해서 사용하기 때문에
    성능에 한계가 생기게 된다.
  • Docker는 OS까지 내려가는 것이 아니라 실행 환경만 독립적으로 사용하기 때문에 컴퓨터에 직접 요소들을 설치한 것과
    별 차이없는 성능을 낼 수 있고, 가상 컴퓨팅보다 훨씬 가볍고 빠르게 각각을 설치하고 켜고 끄고 연동할 수 있다.

서버에 무슨 일이 있어서 고쳐야하거나 일부를 업그레이드해야할때는 일일이 요소들을 정지하고

지우거나 새로 깔거나 할 필요 없이 이 컨테이너들을 아예 갈아껴서 운영하면 된다.

 

컨테이너가 없는 방식과 비교해서 말도 안되게 쉬워졌다.

 

도커 없이 IT 서비스를 이용하는 것은 상상도 할 수 없게 되었다.

 

'IT 지식' 카테고리의 다른 글

[Docker] Docker-Compose 매커니즘 이해하기  (0) 2022.12.02
[Docker] docker-compose 설치하기  (0) 2022.12.01
[Docker] Docker로 MySQL설치하고 접속하기  (0) 2022.12.01
MVC 웹 프레임워크란?  (1) 2022.12.01
데이터란?  (0) 2021.10.25