ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker란
    카테고리 없음 2024. 5. 19. 23:10

    도커는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, 가상적인 환경에서 애플리케이션을 실행시키기 위해 리눅스 커널의 컨테이너 기능을 활용하는 방식입니다.

     

    컨테이너란

    다양한 OS가 존재하면서 운영체제와 배포판등에 따라 기술 및 정책도 다르고 이에 따라 명령어도 조금씩 달라집니다.
    이렇다 보니 새로 만든 애플리케이션을 실제 작업한 노트북에서 테스트 환경이나 실서비스 운영환경으로 옮길 때마다 온갖 이상한 오류를 직면하게 됩니다. 또한 하나의 서버에 여러 개의 애플리케이션을 설치하는 것도 문제였습니다. 서로 사용하는 라이브러리의 버전이 다르거나 한다면 충돌이 발생하는 문제가 생긴 것이죠. 그래서 소프트웨어를 다른 컴퓨팅 환경으로 이동하면서도 안정적으로 실행하는 방법이 없을까?라는 고민이 생겼고, 그렇게 탄생한 기술이 컨테이너입니다.


    특징

    리눅스 커널의 기능을 활용하여 프로세스를 분리하고 독립적으로 실행할 수 있는 가상화 기술로 이미지 기반의 배포 모델을 제공하여 애플리케이션과 그에 필요한 종속 항목을 모든 환경에서 공유할 수 있습니다.

    각 이미지 파일을 계층으로 구성하며 이 계층들은 버전 제어와 롤백 기능을 제공합니다. 이를 통해 애플리케이션 및 종속성의 변화를 추적하고 이전 버전으로 쉽게 롤백할 수 있는 특징을 가지고 있으며 컨테이너를 몇 초 안에 배포할 수도 있고 데이터를 쉽게 생성하고 제거할 수 있습니다.

     

    장점

    • 가볍고 빠른 가상화: 도커는 컨테이너를 사용하여 애플리케이션을 격리된 환경에서 실행합니다. 컨테이너는 가볍고 시작 시간이 짧아서 빠르게 배포하고 확장할 수 있습니다.
    • 이식성과 확장성: 도커는 이미지 기반으로 애플리케이션과 종속성을 패키징하여 이식성을 높여줍니다. 동일한 이미지를 여러 환경에서 실행할 수 있으며, 애플리케이션을 쉽게 확장하거나 축소할 수 있습니다.
    • 효율적인 리소스 관리: 도커는 호스트 시스템의 리소스를 효율적으로 관리합니다. 여러 컨테이너를 단일 호스트에서 실행하여 리소스의 공유와 최적화를 가능하게 합니다.
    • 격리와 보안: 도커는 각 컨테이너를 격리된 환경에서 실행하므로, 서로 영향을 주지 않고 독립적으로 실행될 수 있습니다. 이를 통해 애플리케이션 간의 충돌을 방지하고 보안을 강화할 수 있습니다.
    • 버전 관리와 롤백: 도커는 이미지를 계층으로 구성하고 변경 사항을 추적합니다. 이를 통해 이미지의 버전을 관리하고 필요에 따라 이전 버전으로 롤백할 수 있습니다.

     

    단점

    • 복잡성: 도커는 초기 학습 곡선이 있을 수 있으며, 컨테이너, 이미지, 네트워크 등의 개념과 도커 자체의 명령어와 설정에 익숙해지는 시간이 필요합니다.
    • 가상화 오버헤드: 도커는 호스트 시스템의 리소스를 공유하여 가상화를 구현합니다. 이는 일부 오버헤드를 초래할 수 있으며, 가상화가 필요 없는 경우에도 약간의 성능 저하가 발생할 수 있습니다.
    • 보안 취약성: 도커는 격리 기능을 제공하지만, 완전한 보안을 보장하지는 않습니다. 컨테이너 간의 공격 가능성이 있으며, 적절한 보안 조치를 적용해야 합니다.
    • 영속적인 데이터 관리: 도커는 컨테이너를 재시작하면 컨테이너 내부의 데이터가 손실될 수 있습니다. 영속적인 데이터 저장을 위해 별도의 볼륨이나 데이터베이스 서비스가 필요할 수 있습니다.
    • 호환성 문제: 도커는 리눅스 커널의 기능을 사용하므로, 일부 운영 체제에서는 호환성 문제가 발생할 수 있습니다. 특히, Windows나 macOS에서는 가상화 기술이 필요할 수 있습니다.

     

    댓글

Designed by Tistory.