본문 바로가기
CS(Computer Science)/소프트웨어공학

3. Docker

by 동욷 2023. 2. 6.

#Docker #Container

Discrepancy in Dev Env. and Ops (testing/deploy) Env

Lightweight Executable SW package

=> Containerization

Docker

  • Container engine
  • PaaS( A set of Platform as a Service) that uses OS level virtualization (운영체제 수준 가상화)
  • deliver software packages called "Containers"
  • VM image = order of GB in size
  • Container image = order of 50MB in size

화물을 실어 나르는 컨테이너 배의 의미

임의의 다양한 화물들을 패키지로 묶어 일정한 규격(인터페이스)의 컨테이너에 적재하여

컨테이너를 내린 항구 (VM) 에서 규격 컨테이너를 부리고 (discharge, container 엔진)

원하는 작업을 수행 (app 실행)

VM

  • 과도한 메모리 점유
  • 느린 부팅 시간
  • 여러 VM 실행시 급속 성능 저하
  • Portability 제한
  • VM 사이에서 데이터 공유 불가능
  • 낮은 효율
  • 구성 : hypervisor / Host OS / hardware

Container

  • 낮은 메모리 점유
  • 빠른 부팅시간
  • 훨씬 많은 수의 container 실행
  • Platform에 구애받지 않음
  • 데이터 공유 가능
  • 높은 효율
  • 구성 : container engine / Host OS / hardware

Container

  • App과 App 실행을 위한 dependency를 묶은 package
  • container engine은 OS level에서의 virtualization을 app에게 제공
  • App을 Container로 만드는 것을 : Containeriztion
  • App은 어떤 dependency 모듈을 호출하든 결국 app use process에 정의된 모듈과 OS 의 system call을 호출
  • container는 container engine을 통해 해당 system call등을 호출하도록 만들어진 패키지
  • H/W기계와 VM위에 모두 장착


#Docker #Container #Command

Image VS Container

• Container image = unchangeable, static file that includes executable code so it can run an isolated process on a containerization platform, i.e., a container engine

• Container image is comprised of system libraries, system tools and other platforms settings a software program needs to run on a container engine

• The image shares the OS kernel of host machine • A container image is compiled from file system layers built onto a parent or base image reusing various SW components, so the user does not create everything from scratch for every project

• Container = running instance of an image => 기본적으로 하나의 컨테이너에는 하나의 프로세스 만 실행되도록 image를 만들 것이 권장되며, 두 개 이상의 프로세스가 필요한 app의 경우 다수의 container를 만들어 사용하는 것이 필요(웹 서버 프로세스와 DBMS 프로세스) 그러나 꼭 필요하다 면 하나의 컨테이너에 다수의 프로세스가 실행되도록 만들 수 있음

• Image는 조리법(recipe), container는 만들어진 요리

• Stopped container는 만들어서 냉장고에 보관한 요리

Install docker container

1) Using source from docker.com

  • sudo apt-get update
  • sudo apt-get install docker.io

2) Using ubuntu repository

docker --version // docker -v

docker --help // docker -h

(sudo) docker run hello-world

cat /etc/group

sudo usermod -aG docker $USER

Docker Container basic commands

  • docker pull ubuntu
  • docker images
  • //run
  • docker run -it -d ubuntu
  • docker ps
  • //exec
  • docker exec -it <container id> <prorom in the container>
  • exit
  • //stop
  • docker stop <container id>
  • docker kill <container id>
  • docker ps -a
  • // remove
  • docker rm -f <container id>
  • docker rmi -f <image id>


 

728x90

'CS(Computer Science) > 소프트웨어공학' 카테고리의 다른 글

6. Network Virtualization  (0) 2023.02.06
5. Docker3  (4) 2023.02.06
4. Docker2  (0) 2023.02.06
2.Git/Github  (0) 2023.02.06
1.SW development models  (0) 2023.02.06