반갑습니다! BTC 룰루랄라 입니다 :)
이번 포스팅에서는 Kubernetes를 알기 전 Container와 Docker에 대한 기본 지식에 대해서 전달해 드리려고 합니다!
그럼 시작해 보도록 하겠습니다. 룰루랄라~♬
1. Container란?
Container란 무엇일까요? Virtual Machine과는 어떻게 다를까요?
일반적인 가상 머신은 Host OS에 Hypervisor를 설치하고 그 위에 Guest OS를 동작 시키는 형태로 동작합니다.
컨테이너 기술은 Host OS에 Container Runtime을 올리고 그 위에 Processor로서 Container를 동작시킵니다.
컨테이너란 Host OS의 커널을 공유하면서 분리된 Process로서 실행해 마치 가상 머신이 움직이고 있는 것처럼 보이게 하는 기술입니다.
컨테이너의 실체는 단순한 Process이므로 VM에 비해 매우 가볍고 빠르게 동작 할 수 있습니다.
2. Docker란?
Docker는 container를 동작시키기 위한 engine 중 하나입니다. 2013년에 dotCloud에 의해 최초로 발표 및 공개되어 지금까지 꾸준히 사용되어 지고 있습니다. container 자체는 새로운 기술이 아니었지만, 다음과 같은 이유로 단기간에 개발자들의 지지를 큰 지지를 얻었습니다.
첫 번째는, container 관리 방식입니다.
Docker에서는 Dockerfile이라는 정의 파일을 작성하여 동일한 container Image를 간단히 만들 수 있습니다. 이는 IaC(Infrastructure as Code)를 구현하는데 매우 적합한 software입니다. 또 container Image에는 application과 그 실행 환경 설정이 포함되어 있기 때문에 Docker Engine만 설치되어 있다면, 그 application의 동작이 보장된다는 장점도 있습니다.
두 번째는, container Image를 저장, 공유하기 위한 에코시스템이 초기부터 준비되었다는 점입니다.
생성한 container Image는 각 환경에 확실히 배포할 수 있어야 의미가 있습니다. Docker는 Docker Hub라고 하는, container image를 저장 및 공유할 수 있는 container repository가 제공됩니다. Docker push/pull 명령으로 간단히 Docker Hub에 container image를 전송하거나 다운로드 할 수 있습니다. 이를 통해 application을 배포할 때 환경 설정 차이로 인해 발생하기 쉬운 문제를 해결 할 수 있습니다. 즉, 개발환경에서 staging 환경, 서비스 환경으로 동일한 container image를 배포할 수 있으므로 test를 거친 container image를 서비스 환경에 안정적으로 배포할 수 있습니다.
이상 Kubernetes를 알아보기 전 Docker와 container에 대해 간단히 알아보았습니다.
다음 시간에는 Kubernetes에 대해 간단히 알아보고, 실제 managed 환경인 AWS EKS에 대해서 알아 보도록 하겠습니다.
감사합니다 :)
참고 문헌
클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트
'INFRA > DevOps' 카테고리의 다른 글
kubernetes 설치 방법 (0) | 2022.04.20 |
---|---|
애자일 소프트웨어 개발 방법론 (0) | 2022.04.14 |
쿠버네티스 환경 (0) | 2022.04.13 |
DevOps란 무엇일까? (0) | 2022.04.08 |
쿠버네티스란 ? (0) | 2022.04.06 |
댓글