2023. 1. 10. 14:43ㆍos
저번에 캡스톤 프로젝트를 진행하면서 db 환경이 동일하지 않아 pr을 올릴때마다 db 아이디와 비밀번호가 계속 변경되는 문제점이 있었습니다. 이번에 팀프로젝트를 진행하면서 이러한 문제를 해결할 방법을 알아보던 중 docker에 대해서 알게 되어서 docker에 대해서 정리하겠습니다. 또한 docker와 vm을 비교가 된다는 사실을 알게 되어 docker와 vm에 대해서 비교를 하는 방식으로 진행하겠습니다.
docker란?
docker는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트입니다.
vm(virtual machine)이란?
컴퓨터 환경을 소프트웨어로 구현한 것, 즉 컴퓨터 시스템을 가상현실화하는 소프트웨어라고 하며, 가상머신상에서 운영체제나 응용 프로그램을 설치 및 실행할 수 있습니다.
docker를 알기 위해서는 container에 대해 알아야 합니다.
container란?
소프트웨어 서비스를 실행하는데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리를 포함하는 경량 패키지입니다.
container를 사용하면 동료 개발자 혹은 자신의 환경이 다름에 구애받지 않고, 훨씬 더 빠르게 개발을 진행할 수 있습니다.
container는 os이미지를 담고 있지 않아 필요한 컴퓨팅 리소스만 사용하면 되므로 애플리케이션을 효율적으로 구동할 수 있습니다.
container는 거의 모든 곳에서 구동할 수 있습니다.
docker vs vm

공통점
docker와 vm은 기본 하드웨어에서 격리된 환경이다.
차이점
docker는 guest os의 이미지를 사용하지 않기 때문에 가볍다.
docker 방식은 app을 실행할 때 host os 위에 어플리케이션의 이미지를 배포하기만 하면되지만 vm은 app을 실행할 때 vm을 띄우고 자원을 할당하고 guest os를 부팅해야 되서 무겁습니다.
하지만 그렇다고 docker가 무조건 좋은 것은 아닙니다. docker는 vm에 비해 안전성이 낮습니다. 왜냐하면 docker는 커널을 공유하고 있기 때문에 container든 host os든 하나만 공격을 받는다면 모두 영향을 끼칠 수 있습니다.
또한 커널 기술은 리눅스 기반의 기술이므로 host os가 다르면 다른 os의 container에 올릴 수 없습니다.
reference
https://hu-nie.tistory.com/entry/Docker-%EC%99%80-VM%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90#2.1.%20%ED%95%98%EC%9D%B4%ED%8D%BC%EB%B0%94%EC%9D%B4%EC%A0%80(hypervisor)?