Docker

monzheld·2022년 2월 6일


Docker 🐳

: 어플리케이션 실행 환경을 코드로 작성할 수 있고, OS를 격리화해 관리하는 리눅스 컨테이너 기술을 제공하는 서비스

  • 어플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼

  • 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징

  • 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것들이 포함되어 있음

    Docker란 무엇입니까?




Docker를 사용해야 하는 이유

1. 환경 표준화
: 다양한 운영체제 환경에 상관없이 어플리케이션이 똑같이 동작하게 하기 위해

2. 컴퓨터별 사용 설정 표준화
: 같은 OS를 사용하더라도 어플리케이션을 설치할 때 컴퓨터별로 다른 설정이 필요함

  • 환경변수
  • 홈 디렉토리 지정
  • 방화벽 설정
  • 사용자 권한 설정
  • Port 설정

-> 개발 혹은 실행에 대한 환경 설정이 코드화되어 있다면 편하게 작업 가능

3. 리소스 격리성
: 하나의 컴퓨터에서 여러 개의 컴퓨터를 이용하는 것처럼 사용할 수 있게 해주는 것

  • 리소스 격리성을 제공하는 기술
    : 가상머신, 도커

가상머신 vs 도커

(왼: 도커, 오: 가상머신)

가상머신 (Virtual Machine)

: 개발 혹은 사용하는 환경을 이미지로 저장, Host OS 위에 Guest OS를 띄우는 방식

  • 도커보다 리소스 격리성을 더 잘 제공
  • VirtualBox
  • VMware

도커 (Docker)
  • 가상머신만큼 견고한 격리성을 제공하지 못하지만 컨테이너의 관점에서 더 빠름
  • 리눅스 컨테이너를 이용한 기술로 OS 위에 다른 OS를 실행하는 것이 아니기 때문에 Virtual Marchine 보다 좋은 성능을 낼 수 있음
  • 개발자와 사용자 커뮤니티를 중심으로 혜택 제공
    -> Docker HUB

=> 가상화와 도커는 격리성을 제공하기 때문에 각 어플리케이션마다 다른 컴퓨터에서 실행되는 것처럼 IP 주소와 Port 등을 다르게 설정 가능

(IP 주소: 집주소 - 인터넷 상에 있는 컴퓨터의 고유한 주소,
Port: 방 번호)


4.

  • 코드를 더 빨리 전달

  • 어플리케이션 운영 표준화
    -> 작은 컨테이너식 어플리케이션을 사용해 손쉽게 배포, 문제 파악, 수정을 위한 롤백 가능

  • 코드를 원활하게 이동

  • 리소스 사용률을 높여 비용 절감

  • 어디서나 안정적으로 실행할 수 있는 단일 객체 확보

  • 필요할 때마다 격리된 서비스 제공 가능

    Docker란 무엇입니까?




Linux Container

  • 필요한 라이브러리와 어플리케이션을 모아 마치 별도의 서버처럼 구성한 것

  • 컨테이너를 이루는 네트워크 설정, 환경변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유

  • 도커의 기반이 되는 기술

1. 프로세스의 구획화

  • 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 가능
  • 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없음

2. 네트워크의 구획화
: 컨테이너 하나에 IP 주소가 기본으로 할당되어 있음

3. 파일 시스템의 구획화
: 컨테이너 안에서 사용되는 파일 시스템이 구획화되어 있기 때문에 해당 컨테이너에서의 명령이나 파일 등의 액세스 제한 가능

0개의 댓글