Docker가 무엇인지, 왜 많은 사람들이 Docker에 열광하는지에 대해 알아보고자 한다.
Docker?
Docker는 컨테이너를 이용하여, 개발자들이 보다 쉽게 개발, 테스트, 배포 할 수 있게 만들어 주는 툴이다.
이 문장만으로는 아직 느낌이 잘 오지 않을 수 있다. 그치만 천천히 알아가보자.
(그리고 여기서 나오는 Container와 Image에 대해서는 다음 포스트를 참고하자.)
Why Docker?
우리는 격리된 환경에서 application을 편리하게 개발, 테스트, 배포하기 위해 Docker를 사용한다.
여기서 중요한 키워드는 "격리된 환경" 이라는 것이다.
왜 "격리된 환경"이라는 것이 중요할까?
개발자들이라면 흔하게 듣고, 하는 말. "어! 내 컴퓨터에서는 잘 돌아가는데요!?" 를 더 이상 하지 않기 위해서이다.
우리가 개발한 Application은 다양한 User들이 사용하게 되고, 이 다양한 User들은 매우 매우 매우 다양한 컴퓨터 환경을 가지고 있다.
그리고 우린 개발자로써 이러한 모든 다양한 환경에서 작동하는 Application을 만들어야 한다. 듣기만 해도 골치 아프다...
이러한 문제를 우리는 컨테이너 라는 격리된 환경에서 개발하고, 그 격리된 환경에서 배포 함으로써 해결 할 수 있다.
더 이상 OS환경 등과 같은 골치 아픈 문제에 신경을 쓸 필요가 없어진 것이다.
Docker가 왜 좋은지는 이제 대충은 알겠다.
근데 그럼 이러한 기능을 제공하는 것은 Docker가 유일한 걸까? 그래서 Docker를 사용하는 것 일까?
정답은 No! 이다. 이미 기존에 가상화기술(VM)을 통해 이러한 기능은 이용 할 수 있었다.
Docker vs VM
그렇다면 우리는 왜 VM 대신 docker를 사용하는 것일까?
아래의 그림은 Docker의 Container 방식과 VM의 작동방식을 비교하고 있다.
VM(Virtual Machine)방식은 Hypervisor 라는 SW를 이용하여 가상 머신을 호스트 하드웨어 위에서 생성 하고 구동하는 방식이다.
결국, VM이라는 독립적인 격리된 환경을 구축하고 그 안에서 어플리케이션을 구동시키는 것이다.
여기에서 주의 깊게 볼 점은, 위 그림(오른쪽 사진)에서 볼 수 있듯이, VM은 Host의 Infrastructure과 별개로,
해당 VM만을 위한 독립된 GuestOS와 커널을 가지게 된다는 것이다.
이에 반해 Docker의 Container 방식(왼쪽 사진)은 하나의 HostOS, 공통된 커널을 이용하여 애플리케이션의 실행 패키지, 즉 이미지를 배포하기만 하면 된다.
쉽게 말해,
VM의 경우, 하나의 애플리케이션을 실행하고자 할 때에도 VM을 띄우고,
각각의 VM에서 각각의 OS, 커널을 실행 시키고 그 다음에야 애플리케이션을 실행 할 수 있는데 반해, (즉 매우 무겁다라는 뜻이다.)
Container는 이미 작동중인 HostOS위에서 이미지를 배포하기만 하면 되기에 매우 가볍고 간편하다는 것이다.
여기까지 Docker가 무엇인지, 왜 사용하는지에 대해 간단히 알아보았다.
다음 포스트에서는 Docker에서 가장 중요한 개념인 Container와 Image가 무엇인지에 대해 정리해보고자 한다.
'Docker' 카테고리의 다른 글
[Docker - 3] Dockerfile 작성법 (with example) (1) | 2022.09.24 |
---|---|
[Docker - 2] Container, Image 란 (0) | 2022.09.24 |
[solved]Cannot create container for service frontend: failed to copy files: failed to open target ... no space left on device (0) | 2022.08.26 |
Docker Container TimeZone 설정 (0) | 2022.08.02 |
docker database /etc/hosts파일(도메인)으로 연결 안되는 문제 해결 (0) | 2022.06.03 |