[Boostcamp AI Tech] Docker

이성범·2022년 2월 16일
0

Boostcamp AI Tech

목록 보기
32/49

Docker

이번 강의에서는 내가 실험한 환경과 동일한 환경을 쉽게 공유하고, 서버를 쉽게 관리할 수 있는 Docker에 대하여 학습을 진행했다.

01. Docker

  • 우선 Docker에 대하여 이해하기 위해서는 가상화에 대한 개념을 알 필요가 있다.
  • 우리가 어떠한 서비스를 서빙한다고 할 때, 서비스를 개발한 로컬 환경에서 배포를 하지는 않을 것이다. 우리는 Local 환경에서 개발을 진행하고, 완료되면 Staging 서버, Production 서버에서 배포를 할 것이다. 여기서 이제 가상화란 개념이 나오게 된다.
  • 소프트웨어라는 것은 매우 민감하기 때문에 Local 환경과 다른 환경에서 Local에서 진행한 작업을 하게 되면 많은 오류가 발생할 수 있다. 그래서 우리는 이러한 서버 환경까지 소프트웨어화 할 수 없을까 라는 고민을 하게 되었고, 그 해답이 바로 가상화 이다. 우리는 가상화된 서버에 Local 환경과 동일한 OS, 소프트웨어 등의 환경을 구축해 그 서버에서 배포를 하게 된다. 한마디로 우리는 가상화 기술을 통해서 Local 환경과 동일한 Staging, Production 환경을 구축해 조금더 효율적 효과적으로 서비스를 배포할 수 있게 되는 것이다.
  • Docker가 나오기 전에는 가상화 기술로 Virtual Machine을 사용했다. 그런데 VM의 단점은 각 서버마다 OS를 포함한 많은 소프트웨어를 설지하게 되기 때문에 프로그래밍 입장에서 매우 무거운 시스템이 된다.(그래도 VM 간이 서로 독립적이기 때문에 Docker 보다는 보안 등의 측면에서는 강점을 가짐)
  • Docker는 VM과 달리 Image와 Container를 통해서 같은 OS 환경 등을 공유하여 VM과 달리 무거움을 크게 덜어주면서, 좀 더 경량화된 가상화 기술이다.
  • Docker는 Image라는 템플릿을 통해서 동일한 OS를 가지는 여러개의 Container를 생성해서 빠르고 가볍게 서버를 확장할 수 있다는 장점을 가진다.(그런데 VM과 달리 Container들이 서로 종속적이라 보안에 약점을 가짐)
  • 그리고 Docker를 잘 활용하면 동일한 ML 실험 환경을 팀에서 빠르게 공유할 수 있어, 모델의 디버깅과 실험 등이 매우 효과적이고 빠르게 진행될 수 있을 것이다.

참고자료

profile
Machine Learning Engineer at Konan Technology

0개의 댓글