[00] Docker(도커)를 배울건데요. Docker가 뭘까요

 

졸업한 선배에게 권유받은 공부키워드, Docker(도커)

ㄴㅔ! 하할게요!

 

 

 

Docker?

Vitual Manchine의 개념을 알고있다면 더 쉽게 이해할 수 있는 프로그램입니다. Docker는 운영체제의 영향을 받지않기 위해 사용되며, Vitual Machine과 같은 효과를 냅니다.

 

 

 

운영체제의 영향을 받지 않는다는 건 어떤 의미를 갖는 거야?

내가 가진 프로그램이 내 컴퓨터에서만 작동되면 그만인 걸까요? 개발자가 나만을 위한 프로그램을 만든다면 그것을 직업으로 가질 수 있는 걸까요? 운영체제를 고려해야할 상황이라는 건 무엇일까요? 

 

여러분이 어떠한 '웹'을 만들었다고 가정합시다. 이 웹은 서버에 올리지 않는 이상, 해당 웹은 내가 가진 로컬저장소(개인컴퓨터)에만 작동합니다. 하지만 개발의 끝은 항상 배포입니다. 서버에 올림으로써 유저들에게 공유되고 이용할 수 있도록 해야합니다. 그 유저가 리눅스를 쓰든 윈도우를 쓰든 웹은 정상작동해야합니다. 이것이 바로 운영체제를 고려해야할 상황이 되는 것이구요.

 

또한 우리는 이 웹을 배포할 때 보통 클라우드서비스(AWS)를 이용하게 됩니다. 이 '호스팅 서비스'는 나의 로컬저장소의 개발환경과 다르게 설정하여 새로운 서버를 만들도록 하는 것이죠. 내가 만들 서버에 적용될 운영체제에 따라 초기 설정을 할 것은 한 두 가지가 아닙니다. 그런데 이 웹이든 무엇이든 사용하게될 서버가 많아진다면 서버를 증설해야할 것이고, 새로 증설할 때마다 이 운영체제의 설정이 여간 번거로운 작업이 아닙니다.

 

 

 

그럼 Docker가 하는 일은 이 운영체제의 영향을 무시하게 해준다는 거야? 어떻게?

맞습니다. 다시 소개하면 도커는 서버를 배포하고 패키징하는데 있어서 운영체제에 따른 문제를 보완해주는 오픈소스 소프트웨어입니다. 운영체제가 윈도우건 리눅스든 간에, 즉 나의 리눅스체제의 로컬저장소로부터 코드를 꺼냈으나 이것이 올라갈 서버는 윈도우체제로 환경이 다를지언정 그에 따른 구애를 받지 않아도 되게끔 해주겠죠.

 

그리고 그러한 보완은 도커가 가진 '컨테이너 개념'의 이용방식 덕분입니다.

이 컨테이너들은 다른 환경을 동일하게끔 만들어줍니다. 이용할 각 개발환경에 Docker를 설치하고, docker파일을 생성하고, docker image를 담고, docker Container안에서 실행하면 끝입니다. 

 

더 자세히 보겠습니다.

 

1. 개발환경에 Docker를 설치한다
2. Docker파일에 구현하고픈 환경(우분투, 파이썬, 깃 등등)을 설정한다
3. 내가 작성한(공유할, 업데이트할) code와 함께 환경설정된 Docker파일을 서버에 업로드한다
4. docker가 해당 파일을 읽어내어 필요한 환경들을 다운로드받게 된다.
5. 운영체제의 영향을 받지않고 정상작동 하고 있음을 확인

 

 

 

 

그럼 서버를 관리하는 방법은 Docker뿐이야?

그건 아닙니다.  tmus, chef, puppet, ansible 등의 방법도 존재합니다. 

그러나 docker가 가진 편리함이 더 도드라지기 때문에 최근 몇년간 개발자들에게 도커가 필수프로그램은 아니어도 필수개념으로 여겨져옵니다.

 

docker의 장점은 다음과 같습니다.

  • docker 컨테이너들은 각각 분리되어 있으며 독립적이다
    - 이 특징을 통해 한 서버에 여러 개의 컨테이너(서버)를 가질 수 있다
    - 예를 들어, 한 곳에는 파이썬 서버를 만들고 다른 곳에서는 자바&node.js를 가진 서버를 만들어 모듈식 관리가 가능해진다
  • 매번 새로운 서비스를 만들 때마다 새로운 서버를 사고 설정할 필요가 없다
    -필요로 할 때마다 docker를 통해 기존 환경을 복제하고 생성하여 사용하면 된다

 

즉 각 컨테이너를 다른 환경으로 설정하는 것 뿐만아니라 분리 및 독립되어있으니 효율이 좋은 것이죠.

virtual machine(운영체제를 또 깐다는 건 무거운 일임)를 이용하는 것보다 가볍구요.

 

이를 알고보면 Docker의 로고에서 왜 고래가 등에 박스들을 얹고 있는지 이해할 수 있죠.

왜 고래인진 모름

 

 

 

 

개념은 알았으니 설치를 하러 가겠습니다 !~!

 

 

*참고영상