DOCKER를 알아보자 !

0

DOCKER

목록 보기
1/2
post-thumbnail

Docker 란?

Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.
AWS Docker 소개

Docker V.S. VM

  • Docker는 기존의 VM(virtual machine)과 다르게 하나의 GUEST OS 위에 DOCKER ENGINE으로 어플케이션을 가동 시킵니다.
  • 이 말이 대체 무슨 말인지 저도 처음에 이해를 못했습니다. 그래서 제가 이해한 방식으로 쉽게 설명을 드리자면, 기존의 VM은 새로운 가상환경을 생성할 때 마다 그에 어플리케이션에 적합한 OS 환경을 구축할 수 있었습니다. 예를들어, 1번 어플리케이션은 우분투로 돌리고, 2번 어플리케이션은 CentOS로 돌리는 등... 이런식으로 각 어플리케이션에 맞는 환경을 구축 할 수 있었습니다.
  • 또한, 이 방식으로 Host Server와 거의 완벽하게 분리되어, 독립적인 실행환경을 구축할 수 있었습니다.
  • 하지만, 위와 같은 방식으로 구축할 경우, Host OS위에 매번 새로운 OS를 설치 및 실행시키는 거라 작업이 무거워서 느렸다고 합니다. (부팅시간은 덤으로 또 생기니 이건 이거대로 또 문제...)
  • 이 점을 보완하기 위해 DOCKER의 DOCKER ENGINE위에 바로 어플리케이션을 올리는 방식의 가상화가 나왔고, Host OS의 커널을 공유하여 (커널을 공유하면 i/o 처리가 쉽게되어 성능이 상승한다고 합니다.) 동작한다고 합니다.
  • Docker의 가상화 기술은 Hypervisor 가상화는 다르게 OS의 커널 위의 user space에서 실행됩니다.
  • 완전히 독립된 운영체제를 가상화 하는 것이 아닌 독립적인 user space를 가상화한다고 생각하시면 편합니다. 마치 하나의 프로그램을 올려두는 식으로 !
  • 그래서 완전히 다른 OS (윈도우 vs 리눅스)는 실행 시킬 수 없다는게 단점이 있긴 있다.

Docker의 구조

1. Docker 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 Registry

  • Docker registires는 docker 이미지를 저장하는 repository라고 보면 된다. Source code를 github에 저장하여 관리하듯 docker 이미지는 dockerhub 같은 docker registries에 저장한다고 생각하면 된다. Github가 마찬가지로 public registry 가 있고 private registry가 있다.

4. Docker Container

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

5. Docker Compose & Swarm

  • Docker에서는 여러 docker container들로 이루어진 stack이나 cluster를 관리 하는 서비스도 제공하는데 바로 docker compose 와 docker swarm이다.

  • Docker compose는 복수의 docker container들을 모아서 종합적인 application stack을 정의 하고 운영할수 있도록 해주는 서비스이다. Compose 파일을 사용하여 전체적인 application 서비스를 설정한후, application을 이루고 있는 각각의 컨테이너들 (예를 들어, web 서버 컨테이너, api 서버 컨테이너 등등)을 따로 실행시킬 필요 없이 한번에 생성하고 실행할 수 있도록 해준다. Docker swarm은 docker containers 들로 이러우진 cluster를 관리할수 있도록 해주는 서비스이다. 즉 docker container를 위한 clustering tool 이다.

profile
# 개발 # 컴퓨터공학

0개의 댓글