DEVOPS/Docker

도커(Docker)가 무엇인가요?

블루티카 2022. 3. 20. 14:53
다들 고래라고 알고 있지만 실제로는 범선이다....

회사를 다니다 보니 전 회사에서도 그렇고 지금 회사에서도 동일하게 개발자들 사이에 '도커'라는 말이 참 빈번하게 오고 가는 것을 느낄 수 있었다.
사실 도커가 어떤 것인지, 무슨 역할을 하는지는 대충 알고 있지만 정작 왜 사용을 하는지는 잘 모르기에
이 기회에 한번 도커에 대해 진지하게 공부를 해보고자 한다.

도커가 뭐죠?
컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트

사실 위에 말을 봐도 뭔 말인지 알기가 쉽지 않다.
최대한 간단히 이야기 해보자면,
똑같은 두 서버가 있다고 해도, 서버 내부의 운영체제 및 패키지는 절대 완벽하게 같을 수가 없습니다.
이러한 작지만 소소한 차이점이 운영하는데 서버 장애를 일으키곤 합니다. (예 : 같은 서버인데, 왜 한개는 정상인데 한개는 에러가 나지??)
사실 이러한 서버를 지칭하는 말이 Snowflakes Server 우리말로 눈송이 서버라고 합니다.

이런 문제를 해결하기 위해 회사마다 다르겠지만 대부분은 서버 운영 기록을 저장했었습니다. 하지만 기록이라는 것도 결국은 변화되기 마련... 근본적인 문제를 해결할 수는 없었습니다.
서버 운영 기록의 가장 큰 문제점은 운영기록이 작성 시기에 실행한 시기 와 현재 실행 시기의 차이점에서 발생하는 것이 많았습니다.
이를 해결하는 단순한 방식은 서버의 상태를 서버 운영 기록이 있던 시기와 맞춰서 운영을 시작하면 되는 것이었습니다.

위 글을 요약해서 말하면

1. 서버 2대를 똑같이 맞출려고 해도 잘 맞춰지지가 않는다 -> 에러 발생
2. 기준이 되는 서버의 운영 기록을 작성 But 실행 시기가 각각 다르면 서버간 실행시간 차이로 에러 발생
3. 운영기록이랑 실행하는 시점을 맞춰서 실행하면 되겠다! -> 도커의 기능


도커 파일은 서버 운영 기록을 코드로 만들어 놓은 것이고,
도커 이미지는 도커 파일과 그것에 대한 실행 시점을 맞춰 놓은 것이라 생각하면 된다.

사용하는 이유

앞부분의 잡설이 좀 길었는데 사용하는 이유에 대해서는 간단히 말하자면

  1. 서버의 배포 및 운영의 용이성
  2. 수평적 확장의 자율성
  3. 서버의 동적 변경 가능으로 유연한 관리

결론

컨테이너 및 클라우드 영역이 개발을 하는 사람들에게 있어서 매우 매력적인 영역이라고 생각한다.
과거의 온프레미스 형식의 서버 관리에서 벗어나 클라우드에서 통합 관리 및 배포가 이루어지니 어느 누가 매력적이지 않다고 할 수 있을까 싶다.
아무쪼록 CRI도 잘 해결되서 K8s와 문제없이 잘 윈윈하며 살았으면 한다.
다음은 도커를 설치하고, 구동하고 개발자로써 아주아주 기본적인 관리 및 컨테이너 확인을 위한 명령어를 공부 할 예정이다.

PS

참고로, 쿠버네티스 1.20 부터는 도커를 정식지원하지 않는다고 해서 도커를 배우는데 걱정이 되는 사람들이 많은 것으로 보이는데, 2022-03월 현재, 미란티스에서 Docker Enterprice를 인수 한 뒤 cri-docker를 깃허브에 올려 놓았다. (확인 하실분은 아래 링크로)
https://github.com/Mirantis/cri-dockerd
cri-docker를 사용하면 동일하게 쿠버네티스를 사용 할 수 있으니 아직은 걱정없이 사용을 해도 될 것이라 생각한다.

'DEVOPS > Docker' 카테고리의 다른 글

도커 기본 개념  (0) 2022.03.21