[DOCKER]Docker 기초

박민하·2022년 7월 19일
0

Deploy

목록 보기
1/15
post-thumbnail

✅ Docker

  도커는 컨테이너를 가상화하여 어플리케이션을 신속하게 배포할 수 있도록 하는 기능이다. 많은 사용량으로 컨테이너 가상화 기술의 대명사처럼 사용되고 있으나, 최근에는 다른 오픈소스 컨테이너 가상화 기술도 성장하고 있다. 컨테이너 하나가 작은 서버라고 볼 수 있다.

✔ 도커로 배포를 하는 이유?

  리눅스는 다양한 형태의 리눅스 패키지가 있고, 업데이트에 따라 다양한 버전이 있어서 프로그램 설정이 다 다르다. 그 설정 중에 하나만 달라도 프로그램이 제대로 동작하지 않는다. 서버를 이전하려고 할 때 이 설정을 환경에 맞춰 일일이 설정하기는 힘든 일이다.

  하지만 도커로 서버 환경을 만들어서 그 안에 서버 설정을 해주면 다른 환경에서도 동작한다. 도커로 설정해놓은 웹 서버는 이전한 서버에 스크립트를 실행만 하면 매번 서버 설정을 해야 하는 번거로움에서 벗어날 수 있다.

✔ 가상화?

  윈도우 유저가 아니더라도 윈도우를 작게 띄워놓거나, 윈도우에 리눅스를 띄워놓는 등 새로운 os를 띄우는 것을 예로 들 수 있다. 하나의 컴퓨터에 여러 가상화 os를 띄워서, 여러가지 일을 시키기 위해서 가상화 기술이 발전했다.

✅ Docker와 기존 가상화의 차이점

✔ Hypervisor 가상화 VS Container 가상화

\ HypervisorContainer
구조물리적 서버의 OS위에 다른 독립적인 OS가 실행된다
(독립적인 OS를 가상화)
OS의 커널 위의 유저 공간에서 실행된다
(독립적인 유저 공간을 가상화)
장점물리적 서버의 리소스를 더 효율적으로 사용할수 있다
(쉬고 있는 CPU가 idle 상태로 낭비되는 현상 방지)
가볍고 빨라 쉽게 독립적인 가상 환경을 실행시킬수 있다
CI/CD 기술과도 잘 어울린다.
단점무거워서 부팅 시간이 길고 리소스(CPU)를 많이 차지한다운영체제가 다른 호스트에서는 실행을 시킬수가 없다
(예: Windows 를 linux 호스트에서 실행시킬수 없다)
완전히 독립적인 운영체제 가상화가 아니므로 보안성이 떨어진다
특징하이퍼바이저라는 중간 관리자의 간섭이 크다간섭이 적다

✅ Docker 구조

1. client 와 server

  • Docker는 클라이언트가 서버에 명령을 전달하고 서버가 실행시키는 구조다.
  • docker binrary 커맨드 → docker 클라이언트
  • dockerd → docker daemon 혹은 docker engine
  • Docker engine과 interact하기 위한 Restful API도 제공된다.
  • 클라이언트와 서버는 동일한 호스트 또는 서로 다른 호스트에서 운영 될 수 있다.

2. Docker 이미지

  • Docker의 life cycle에서 docker 이미지는 “build”의 부분에 해당된다.
  • Docker container에서 실행시키고 싶은 application을 docker 이미지로 빌드해서 실행시킨다.

3. Docker registries

  • Docker registires → docker 이미지를 저장하는 repository
  • docker 이미지는 dockerhub 같은 docker registries에 저장한다.
  • Github와 마찬가지로 public registry 가 있고 private registry가 있다.

4. Docker containers

  • docker 이미지를 실행시키는 가상화 공간.
  • Docker container는 하나 혹은 그 이상의 프로세스를 실행 시킬수 있다.
  • 하지만 하나의 프로세스만 실행시키는 것을 권장한다.

<참고 사이트>
docker 홈페이지
docker 기본 사용법

profile
backend developer 🐌

0개의 댓글