Docker

dev_314·2023년 5월 6일
0

참고
Kubernetes for the Absolute Beginners

Container

구체적인 구분이 없다면 Container와 Docker는 동일한 기술을 의미함

  1. 사용하려는 컴포넌트가 구동 환경(Ex. OS)과 호환이 되어야 한다.

다음과 같은 경우가 발생할 수 있다.

  1. 컴포넌트에 변경이 생기면, 이와 관련된 다른 컴포넌트와의 호환성을 고려해야 한다.
  2. 새로운 개발자를 위해 환경을 설정하는 과정이 반복적, 복잡하다.
  3. 개발자마다 사용하는 개발 환경이 다를 수 있다.

컴포넌트를 다른 컴포넌트, OS와 독립적으로 관리하기 위해 컨테이너 기술을 사용한다.

컨테이너 기술을 사용함으로써, 컴포넌트들은 각자의 환경, 필요로 하는 라이브러리, 의존성을 사용할 수 있게 된다.

Container란

  • 완벽히 독립된 환경을 의미
    • 고유한 프로세스, 서비스를 실행할 수 있음

    • 네트워킹 인터페이스, 저장공간을 가질 수 있음

    • LXC, LXD, LXCFS와 같은 다양한 Container 기술이 존재하나 Docker가 대표적인 기술로 주로 사용된다.

    • 컨테이너는 동일한 OS의 커널을 공유한다

      Docker는 LXC를 기반으로 만들어진 컨테이너 기술
      사용자가 편하게 컨테이너 기술을 사용할 수 있도록 도와주는 것 = Docker

'Docker는 OS kernel을 공유한다'

Docker는 OS kernel을 공유한다의 의미는 크게 두 가지로 풀이될 수 있다.

OS 호환성

Linux환경을 예로 들면,

  1. Common Linux Kernel은 하드웨어를 다룰 수 있도록 도와준다.
  2. OS(Ex. Ubuntu, Fedora, ...)은 각자만의 유저 인터페이스, 드라이버, 컴파일러, 파일 시스템 등(Set of SW)을 통해 Common Linux Kernel을 Customize한다.

만약 Ubuntu에서 Container를 정의했다면, 그 Container는 Fedora에서도 사용할 수 있다.
즉, 같은 OS Kernel을 사용하는 어떠한 OS 환경에서도 공유할 수 있는 것이다.

그러므로, Ubuntu에서 정의한 컨테이너를 Fedora에서는 실행시킬 수 있는데, Windows에서는 실행시킬 수 없다.

Docker는 OS에 맞게, 필요한 Set of SW만 변경해서 OS 호환성을 지원한다.

VM에 구분되는 Container의 특성


Virtual Machine은 Host OS와는 별도로 각자마다 OS를 가진다. 그렇기 때문에 Container에 비해 상대적으로 Utilazation, Isolation이 높다.
그러나 더 큰 Size를 차지하고, Boot up 시간을 더 요구한다.

항목DockerVirtual Machine
OSHost OS위에서 작동각자의 OS를 가짐
Utilzation낮음높음
Isolation낮음높음
Size작음
Boot up빠름느림

Public Docker Registry

Public Docker Registry (Docker hub)를 통해 미리 만들어진 Docker Image를 공유할 수 있다.
단순히 다음 명령을 통해 Docker Container를 구동시킬 수 있다.

docker run IMAGE_NAME

Image, Container

Image는 일종의 Template,
Container는 Image에 대한 Instance

직접 Image를 만들어서 public repository에 공유할 수 있다.

Docker 명령

# Repository에서 Image 불러오기
docker pull IMAGE_NAME

# 컨테이너 목록 확인
docker ps

# 컨테이너 접속
docker exec -u root -it COTAINER_ID(or CONTAINER_NAME) bash

# Docker-compose 실행
docker-compose up -d

# Docker-composer 종료
profile
블로그 이전했습니다 https://dev314.tistory.com/

0개의 댓글