[docker] docker의 개념

김우경·2021년 4월 5일
0

ci/cd 찍먹

목록 보기
2/13

소프트웨어공학 수업을 수강하면서 정리한 내용입니다!

Container

일단 docker에 대해 알아보기 전에 container가 무엇인지 그리고 왜 필요한지부터 알아보려고 합니다.

왜 필요할까?

개발 환경, testing 환경, production 환경 등이 모두 동일해야 local에서 잘 돌아가는 software가 어디에서 실행해도 잘 동작함이 보장됩니다. 따라서 OS와 library 등 모든 software의 dependency를 포함하는 실행환경 즉, frontend + backend + db + library, environment 등 dependency를 개발자 동작 환경 그대로 포함한 container가 필요하게 된 것 입니다.

Container란?

개별적인 software의 실행에 필요한 환경을 독립적으로 운용할 수 있도록 기반환경 또는 다른 실행환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체계 수준의 격리 기술입니다.

Docker

  • DevOps phase 중 Deploy/Operate phase를 돕는 도구
  • OS level을 가상화하는 Paas
  • container라는 SW를 packaging해서 배포
  • Throughput을 개선

Docker와 VM

Docker Container Lifecycle

-> 이 과정은 전부 container engine위에서 일어남

Docker Architecture

  • 기본적으로 REST API를 통해 통신하는 client-server 구조를 가집니다.

  • docker engine : user computer에서 docker container를 build하고 run하는데 사용하는 software
  • docker client : docker command를 실행 -> 이 command는 REST API를 통해서 docker daemon에 전달
  • docker daemon : 전달받은 명령에 따라 OS의 기능을 사용해서 container를 실행
profile
Hongik CE

0개의 댓글