Tag Archives: docker

도커(docker)가 뭔가요?

쉽고 빨리 배우는 후루룩 개발 시리즈입니다.

Docker “도커”라는 것이 있습니다.

개발 세계에서 말하는 도커는 배가 정박하는 그 도커가 아닙니다.

도커를 흔히 컨텐이너라고 부릅니다. 화물 실어 나를때 배에 싣는 큰 쇠로된 상자인 컨테이너와 같은 것은 아니지만 개념은 비슷합니다.

1대의 서버에 전혀 다른 소프트웨어를 설치해서 사용하다보면 서로 궁합이 안 맞아서 한쪽이 설치가 안되거나 작동이 안되는 일이 발생합니다.

필요한 소프트웨어들을 버에 설치할 때 같이 필요한 소프트웨어들이 엄청 많이 필요할 수 있습니다.

몇 세트를 설치하다보면 이제 세트들끼리 서로 충돌을 하는 소프트웨어들이 생깁니다. 뭐 이런일들입니다.

세트A: ”b가 설치되어 있으면 나는 작동못해”

세트B: “b는 나한테 꼭 필요해”

이 외에도 여러가지 복잡한 일들이 생깁니다. 이 문제를 해결할 수는 있지만 소프트웨어 세트가 복잡하고 많고 오래될 수록 점점 지옥이 되갑니다.

그래서 하나의 서버에 전혀 다른 서버인 것처럼 환경자체를 가상으로 구별하고 마치 다른 소프트웨어가 설치되어 있지 않은 것처럼 깨끗하게 분리할 수 있는 방법이 개발되었습니다.

이걸 영어로 virtualziation “버추얼라이제이션”이라고 하고 우리말로는 “가상화” 라고 합니다.

도커는 가상화 소프트웨어입니다. 즉 서버의 환경을 분리해주는 것입니다.

물론 가상화는 이것보다는 설명할 것이 더 많습니다만 우선 여기까지만 이해하세요.

도커의 문제

  • 환경 분할해서 쓰는 OS는 리눅스만 가능해요.
  • 완전가상화가 아니기 때문에 OS자체를 전혀 다른 것을 설치할 수 없어요.
  • 완전가상화는 OS자체를 전혀 다른 것으로 바꿀 수 있어요. 하지만 도커는 완전가상화가 아니예요.

도커가 하는일

  • 리눅스 환경을 분리해서 전혀 다른 서버인 것처럼 나눠줘요.
  • 나눠진 환경에 소프트웨어를 설치할 수 있고, 코드를 짜서 넣을 수도 있어요.
  • 환경 자체를 통째로 받아서 저장해 둘 수 있어요. 이걸 도커 이미지로 만든다고 말해요.
  • 만들어진 이미지로 나중에 빵틀에서 빵찍어 내듯이 환경을 그대로 실행해서 작동하도록 만들 수 있어요.

도커를 쓰면 좋은 것

도커를 CI/CD에도 쓰면 좋습니다.

  • 도커로 서비스 소프트웨어를 만들어서 도커 이미지자체를 배포할 수 있습니다. 이게 편한 이유는 소프트웨어를 배포할 때 매번 서버의 환경이 소프트웨어가 구동하는데 필요한 환경과 일치하는지 확인해야 하고 안 앚으면 맞춰주고 해야 하는데 도커를 이용하면 필요가 없어집니다.
  • 매번 환경을 세로 만들기 때문에 환경을 구성하다가 환경구성에 필요한 소프트웨어가 갑자기 설치가 안되거나 오류가 발생했다거나 하면 그 사실을 알 수 있습니다. 소프트웨어가 동작하는 환경을 구성하는것 자체가 잘되는지 배포하기 전에 테스트를 할 수 있습니다.

별것 아닌것 같지 개발자를 편하게 해주는 것입니다.