일단 도커를 간단히 설명하자면, 도커는 컨테이너라는 이름으로 애플리케이션을 묶어서 다른 컴퓨터에서도 똑같이 돌아가게 해주는 도구입니다.
이러한 도커를 이용하여 웹서버를 구축하면 다음과 같은 장점과 단점이 있습니다.
도커를 이용하면 개발, 테스팅, 배포 환경을 표준화할 수 있습니다. 즉, 하나의 컨테이너로 환경을 묶어 놓으면 다른 컴퓨터에서도 동일하게 동작할 수 있습니다.
즉, "내 컴퓨터에서는 작동하는데 서버에서는 왜 안 되지?"와 같은 문제를 해결할 수 있습니다.
도커와 비교하자면 가상 머신도 하나의 컴퓨터에 여러 개의 가상 컴퓨터를 실행시키는 방법이기는 하나, 도커 컨테이너는 가상 머신에 비해 훨씬 경량화되어 있습니다.
가상 머신은 각각 별도의 운영체제를 필요로 하지만, 컨테이너는 호스트 시스템의 운영체제를 공유하기 때문에 별도의 운영체제를 실행할 필요가 없습니다.
이로써 더 적은 자원을 사용하고 더 빠른 시작 시간을 가집니다.
도커 컨테이너는 어느 환경에서나 동일하게 동작합니다.
따라서 웹서버를 다른 시스템으로 쉽게 이동하거나 복제할 수 있습니다.
각 컨테이너는 서로 분리되어 있으며, 하나의 컨테이너에 문제가 생겨도 다른 컨테이너에는 영향을 주지 않습니다.
그렇기 때문에 보안과 안정성이 향상됩니다.
도커를 처음 사용하게 되면 학습 곡선이 있을 수 있습니다.
특히 컨테이너를 관리하고 구성하는 방법, 도커 이미지를 만드는 방법 등을 알아야 합니다.
도커 컨테이너는 호스트 시스템의 리소스와 운영 체제를 공유하기 때문에, 호스트 시스템에 문제가 생기면 컨테이너에도 영향을 줄 수 있습니다.
도커 컨테이너는 임시적인 존재로, 컨테이너를 제거하면 컨테이너 내의 데이터도 함께 삭제됩니다.
따라서 데이터를 영구적으로 저장하려면 별도의 볼륨을 사용해야 하며, 이는 관리에 추가적인 복잡성을 초래할 수 있습니다.
도커는 컨테이너를 격리시키지만, 완벽한 격리는 아닙니다.
악의적인 공격자가 컨테이너에서 호스트 시스템으로 권한을 확장할 수 있는 취약점이 발견되었던 사례도 있습니다.
물론 일반적으로 도커를 잘 구성하고 최신 보안 패치를 적용함으로써 완화할 수 있습니다.
일단 도커를 간단히 설명하자면, 도커는 컨테이너라는 이름으로 애플리케이션을 묶어서 다른 컴퓨터에서도 똑같이 돌아가게 해주는 도구입니다.
이러한 도커를 이용하여 웹서버를 구축하면 다음과 같은 장점과 단점이 있습니다.
장점
표준화
도커를 이용하면 개발, 테스팅, 배포 환경을 표준화할 수 있습니다. 즉, 하나의 컨테이너로 환경을 묶어 놓으면 다른 컴퓨터에서도 동일하게 동작할 수 있습니다.
즉, "내 컴퓨터에서는 작동하는데 서버에서는 왜 안 되지?"와 같은 문제를 해결할 수 있습니다.
경량화
도커와 비교하자면 가상 머신도 하나의 컴퓨터에 여러 개의 가상 컴퓨터를 실행시키는 방법이기는 하나, 도커 컨테이너는 가상 머신에 비해 훨씬 경량화되어 있습니다.
가상 머신은 각각 별도의 운영체제를 필요로 하지만, 컨테이너는 호스트 시스템의 운영체제를 공유하기 때문에 별도의 운영체제를 실행할 필요가 없습니다.
이로써 더 적은 자원을 사용하고 더 빠른 시작 시간을 가집니다.
이식성
도커 컨테이너는 어느 환경에서나 동일하게 동작합니다.
따라서 웹서버를 다른 시스템으로 쉽게 이동하거나 복제할 수 있습니다.
분리와 격리
각 컨테이너는 서로 분리되어 있으며, 하나의 컨테이너에 문제가 생겨도 다른 컨테이너에는 영향을 주지 않습니다.
그렇기 때문에 보안과 안정성이 향상됩니다.
단점
복잡성
도커를 처음 사용하게 되면 학습 곡선이 있을 수 있습니다.
특히 컨테이너를 관리하고 구성하는 방법, 도커 이미지를 만드는 방법 등을 알아야 합니다.
호스트 시스템과의 밀접한 연결
도커 컨테이너는 호스트 시스템의 리소스와 운영 체제를 공유하기 때문에, 호스트 시스템에 문제가 생기면 컨테이너에도 영향을 줄 수 있습니다.
데이터 관리
도커 컨테이너는 임시적인 존재로, 컨테이너를 제거하면 컨테이너 내의 데이터도 함께 삭제됩니다.
따라서 데이터를 영구적으로 저장하려면 별도의 볼륨을 사용해야 하며, 이는 관리에 추가적인 복잡성을 초래할 수 있습니다.
보안 이슈
도커는 컨테이너를 격리시키지만, 완벽한 격리는 아닙니다.
악의적인 공격자가 컨테이너에서 호스트 시스템으로 권한을 확장할 수 있는 취약점이 발견되었던 사례도 있습니다.
물론 일반적으로 도커를 잘 구성하고 최신 보안 패치를 적용함으로써 완화할 수 있습니다.