[배포] Docker의 개념과 특징

somin·2021년 9월 16일
0

배포

목록 보기
3/4

Docker

1. 개념

1) Docker

  • 도커(Docker) : 리눅스 컨테이너(Linux Container) 기술을 기반으로 하는 오픈 소스 서비스
  • 도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 격리화하여 관리

2) Linux Container

  • Linux 기반의 기술 중 하나로, 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 의미
  • 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유
  • 가상화와는 리소스 격리성 차원에서 다른 기술임

구획화

  1. 프로세스의 구획화
    : 특정 컨테이너에서 작동하는 프로세스는 기본적으로 그 컨테이너 안에서만 액세스 가능
    : 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에게 영향을 줄 수 없음
  2. 네트워크의 구획화
    : 기본으로 컨테이너 하나에 IP 주소가 할당됨
  3. 파일 시스템의 구획화
    : 컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있기에 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있음

2. 특징

1) 환경 표준화

  • 대표적인 운영 체제(OS) : Linux, Windows, MacOS로 구분
  • 엔지니어는 자신이 개발하는 애플리케이션이 어떤 환경에서 구동될지 생각하고 개발해야 함
  • 개발하려고 하는 여러 애플리케이션을 구동하는 운영체제가 서로 다르다면 환경에 따라 조금씩 변경할 부분이 발생
  • 같은 Linux인 Ubuntu, CentOS, Debian은 서로 다른 환경이므로 여러 버전이 존재할 수도 있음

2) 리소스 격리성

  • 실제로는 하나의 컴퓨터를 사용하지만, 여러 개의 컴퓨터를 이용하는 것처럼 하는 것
  • 리소스 격리성을 제공하는 기술 : 가상 머신(Virtual Machine), 도커
  • 가상 머신과 도커는 격리성을 제공하기 때문에 각 애플리케이션마다 다른 컴퓨터에서 실행되는 것처럼 IP나 Port 등을 다르게 설정할 수 있음

(1) 가상 머신

  • VirtualBox, VMware이 대표적
  • 개발 환경이나 사용 환경을 이미지로 저장하고, Host OS 위에 게스트 OS를 올리는 방식

(2) 도커

  • 가상 머신만큼 견고한 격리성을 제공하지는 않음
  • 도커는 리눅스의 컨테이너(Linux Container)를 이용한 기술로, OS 위에 다른 OS를 실행하는 것이 아니므로 가상 머신보다 좋은 성능을 낼 수 있음
  • 애플리케이션에 대한 환경 격리성을 중심으로 한 VM과는 달리, 도커는 Container의 관점에서 개발자와 사용자 커뮤니티를 중심으로 혜택을 제공하는 데 있음

Docker Container Lifecycle

3. Docker CLI

  • Ubuntu 운영체제로 실습을 진행하는 경우, 관리자 권한으로 Docker 명령어를 실행해야 함
    *permission denied 메시지가 포함된 오류를 만난다면, sudo를 명령어 앞에 붙여서 관리자 권한을 부여

설치

  1. brew install docker
    • homebrew로 설치한 docker는 서버가 아닌 client이기에 docker server로 설치를 해야 함
  2. Install Docker Desktop on Mac
profile
✏️

0개의 댓글