TIL

Docker란 ?

haseung22 2024. 11. 18. 21:17

🤔 Docker(도커) 란 ?

Docker는 컨테이너 기반의 오픈 소스 가상화 플렛폼이다.

Docker는 애플리케이션과 그 의존성을 가상화된 컨테이너에 담아 효율적으로 실행할 수 있게 해준다.

이를 통해 다양한 운영체제와 환경에서 일관된 실행 환경을 제공하고, 개발과 운영 간의 이식성을 높여준다.

 

🤯 컨테이너란?

컨테이너는 도커의 핵심 개념으로, 

격리된 환경에서 프로세스를 실행하기 위한 경량화된 가상화 단위로

애플리케이션과 그에 필요한 모든 종속성(라이브러리, 실행파일 등)을 컨테이너에 패키징하여 동일한 환경에서 실행할 수 있게 한다.

🧐 Docker Image

  • DockerImage란 서비스 운영에 필요한 종속성(라이브러리, 실행파일 등)을 묶어서 가지고 있는 것이다.
  • Dokcer 이미지들은 github와 똑같이 Docker Hub 사이트를 통해 버전관리 및 배포 Push, Pull이 가능하다.
  • 또한 상태값을 가지지 않고 이미지가 한번 생성되면 변경할 수 없다.
  • 같은 이미지에서 여러개의 컨테이너 생성이 가능하다.
  • 컨테이너의 상태가 바뀌거나 삭제되더라도 이미지는 변하지 않는다.

 

😳 Docker File

 

 

도커 이미지를 만들기 위해서는 도커 파일이 필요하다.

도커 파일을 이용해 이미지를 구성하기 위한 명령어들을 작성하여 이미지를 구성할 수 있으며, 스크립트 파일이다.

주로 텍스트 형식의 명령어들로 구성되어 있으며, 이를 사용하여 이미지 빌드 과정을 자동화하고 문서화할 수 있다.

 

🥴 Docker  장점

  • 가볍고 빠른 가상화
    • 컨테이너는 가볍고 시작 시간이 짧아서 빠르게 배포하고 확장할 수 있다.
  • 이식성과 확장성
    • 동일한 이미지를 여러 환경에서 실행할 수 있으며, 애플리케이션을 쉽게 확장 및 축소할 수 있다.
  • 효율적인 리소스 사용
    • 여러 컨테이너를 단일 호스트에서 실행하여 리소스의 공유와 최적화를 가능하게 한다.
  • 격리
    • 각 컨테이너를 격리된 환경에서 실행하기 때문에 서로 영향을 주지 않고 독립적으로 실행된다.
    • 이를 통해 애플리케이션간의 충돌을 방지한다.

🥴 Dokcer 단점

  • 복잡성
    • 컨테이너, 이미지, 네트워크 등의 개념과 도커 자체의 명령어와 설정에 익숙해지는 시간이 필요
    • 도커의 개념과 도구들을 이해하고 사용하는데 학습 곡선이 있을 수 있다.
  • 보안 취약성
    • 컨테이너 간의 공격 가능성이 있으며, 적절한 보안 조치를 적용해야한다.
  • 데이터 관리 어려움
    • 컨테이너의 휘발성 특성 때문에 데이터를 관리하는데 어려움이 있을 수 있다.
    • 영속적인 데이터 저장을 위해서 별도의 볼륨이나 데이터베이스 서비스가 필요할 수 있다.
  • 호환성 문제
    • 도커는 리눅스 커널의 기능을 사용하므로 일부 운영체제에서 호환성 문제가 발생할 수 있다.