Docker에 nginx 사용에 관한 생각

임현규·2023년 3월 1일
0

Docker를 사용하는 이유

Docker is an open platform for developing, shipping, and running applications.Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.

💡 도커는 컨테이너 기반으로 개발과 배포, 실행을 위한 오픈소스 플랫폼이다.

Docker가 가진 특징

performance

컨테이너 기반으로 가상화시 OS를 따로 생성하지 않기 떄문에 메모리 사용량이 적고 빠르다


https://www.docker.com/resources/what-container/

docker는 컨테이너 기반으로 동작하며 container는 docker engine을 통해 실행한다. 그렇기에 컨테이너는 Application에 필요한 정보와 동작에 필요한 간단한 래핑작업만 되어있고 그 이외에 추가적인 OS가 필요하지 않다. 하지만 Virtual Machine의 경우 하나의 물리적인 서버를 소프트웨어를 활용해 추상화한 개념이기 때문에 각각의 application마다 OS가 탑재된다. 그렇기에 메모리를 더 많이 잡아먹고 부팅 속도 및 동작이 상대적으로 느리다.

빠른 개발 및 환경 구축

일일히 환경을 구축하면 오래 걸리지만 docker를 활용하면 컨테이너 기반이므로 image만 등록하면 aws든 oracle cloud든 migration하기가 쉽다. 즉 재활용이 뛰어나고 관리가 쉽다는 장점이 있다.

안정성

docker의 컨테이너는 개별 Application 실행환경을 독립적으로 운용할 수 있도록 운영체제 수준의 격리 기술을 의미한다.

따라서, 다음과 같은 보안성 측면에서, 여러 이점을 제공한다.

  1. 격리된 환경
    도커 컨테이너는 호스트 시스템과 격리된 환경에서 실행되기 때문에 애플리케이션간 상호 작용을 제한하고, 독립적인 실행환경 덕분에 서비스 이상 전파 문제를 방지할 수 있다.

  2. 이미지 레이어
    도커 이미지는 여러 레이어로 구성되어 있다. 각 레이어는 이전 레이어에 대한 변경 사항만 저장하여 이미지의 크기를 줄이며, 변경 사항을 추적할 수 있다. 이는 이미지를 더욱 안전하게 보호하고, 악성 코드가 이미지에 포함되는 것을 방지한다.

  3. 보안 업데이트
    도커는 시스템 패키지 및 라이브러리에 대한 보안 업데이트를 쉽게 적용할 수 있다. 이는 보안 취약점에 대한 대응력을 높이며, 시스템의 보안성을 향상시킨다.

  4. 제한된 권한
    도커 컨테이너는 필요한 권한만 부여받으며, 호스트 시스템의 권한을 부여받지 않는다. 이는 컨테이너 내에서 악성 코드가 실행될 가능성을 줄이고, 시스템의 보안성을 높인다.

  5. 보안 검사
    도커 이미지는 보안 검사 도구를 활용하여 검증할 수 있다. 이를 통해 이미지 내에 존재하는 악성 코드 및 취약점을 미리 파악하여 보안 위협 제거가 가능하다.

Docker에 왜 nginx인가?

Docker가 가진 권한으로 SSL 및 리버스 프록싱도 충분히 활용할 수 있다. 굳이 nginx가 없어도 보안적인 측면에서 Docker 만으로 충분히 구성할 수 있을 듯 하다. 하지만 nginx 컨테이너를 사용하기로 했다. Nginx를 구성했을 때 docker만 사용할 때보다 사용시 훨씬 간단하고 추가적인 이점이 있기 때문이다.

nginx 컨테이너를 사용하는 이유

  1. 간편한 설정관리
    nginx 컨테이너를 사용하면 nginx.conf 파일을 /etc/nginx/nginx.conf로 바인드 마운트해서 편하게 설정을 관리 할 수 있다. 이를 통해 구성 요소 및 버전 관리, 이식성, 확장성에 있어서 더 나은 관리를 제공한다.

  2. 높은 가용성과 성능
    docker 성능도 나쁘지 않지만 nginx는 웹 서버 및 리버스 프록시로 널리 사용되는 높은 성능의 소프트웨어이다. 따라서 네트워크 트래픽이 증가하더라도 쉽게 대응할 수 있다.

  3. 보안성
    docker와 마찬가지로 보안에 다양한 기능을 제공한다. 예를 들면 SSL 및 TLS 암호화, 요청 및 응답 헤더 조작, 더 나은 DDoS 대응 기능들을 제공한다. 이러한 예는 보안상 nginx를 사용해야 할 이유 중 하나가 된다.

  4. 인기
    많은 기업에서 apache와 nginx는 웹 서버의 표준으로 사용하고 있다. 2022년 3월 넷크래프트의 통계에 따르면 Apache: 24% nginx: 33%로 굉장히 많이 사용하고 있다. 많은 기업과 프로젝트에서 사용하는 만큼 안정성과 편의성이 보장되어 있음을 알 수 있다.

profile
엘 프사이 콩그루

0개의 댓글