로봇공학과에서의 Docker

https://github.com/remotty/documents.docker.co.kr

도커란 개념을 설명하기 앞서서 로봇공학과에서 개발이란 내용을 주제로 먼저 이야기를 살짝 해보겠습니다.

로봇공학과에서 개발이란?

  1. IC-PBL 수업
  2. 대회
  3. 개인프로젝트

위와 같은 이유로 로봇공학과에서는 개발을 많이 진행합니다.

그래서 제가 4년간 개발을 진행해올 때는 분야를 나누어서 보통 개발을 진행했습니다.

개발 분야

  1. 로봇 소프트웨어(주로 ROS를 사용하거나 제어를 하는 소프트웨어입니다.)
  2. 로봇 전장부 (납땜하고, 전체적인 구성요소들을 디테일하게 선정하는 사람입니다.)
  3. 로봇 하드웨어 (로봇의 기계기구부를 구체적으로 어떻게 디자인할지 구성할지 선택하는 사람입니다.)
  4. 로봇 인공지능(Vision이나, 여러가지 로봇에 필요한 인공지능을 사용하는 사람입니다.)

저는 보통 프로젝트를 진행할때 크게 이렇게 나누었고 필요에 따라서 웹을 다루는 친구나 디자인을 하는 친구들과 같이 했습니다.

그 중 로봇소프트웨어와 로봇인공지능을 생각하는 친구들을 위한 스터디입니다.

도커란?

도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트 입니다. 도커는 일반적으로 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 말합니다.

도커 엔진(Docker Engine)은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 프로젝트입니다. 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 도커의 핵심은 도커 엔진이라고 할 수 있습니다.

사실 정확하게 요약하면 프로세스를 격리하여 프로젝트를 보다 쉽게 관리할수 있게 생각하면된다.

virtual Machine vs Docker Container

Untitled

가장 비슷하다고 생각들하는 가상머신과 도커 컨테이너의 차이를 알아보자.

Virtual Machine(가상머신)

가상머신이란? 하나의 운영체제에서 여러개의 Hypervisor이란 개념을 활용해서 여러개의 운영체제를 사용하는 것이다. 그러한 가상화 방식을 사용하는 툴은 VirtualBox, VMware 등이 있다.


잠깐 Hypervisor의 간단설명

하이퍼바이저는 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어입니다. 가상 머신 모니터(Virtual Machine Monitor, VMM)라고도 불리는 하이퍼바이저는 하이퍼바이저 운영 체제와 가상 머신의 리소스를 분리해 VM의 생성과 관리를 지원합니다.

추가링크 : 하이퍼바이저란?


예를 들어 여러분이 주로 사용하는 windows 라는 운영체제에서 Ubuntu, MacOS등을 사용하는 것이라는 것이 쉬운예시가 되겠다.

그렇다면 단점은 무엇일까?

  1. Hypervisor를 반드시 거쳐야 하므로 성능이 저하될수 있다.
  2. 가상머신은 Guest OS를 위한 라이브러리, 커널 등을 모두 포함해야 하므로 배포를 위한 image를 생성하려면 크기가 커진다

즉, 개발자들이 중요시 하는 생산성과 효율에 있어 떨어진다고 할 수 있다.

Docker Container(도커 컨테이너)

기존의 비효율적인 것들을 대체하기위해 나온것이 Docker container이다. 이는 리눅스 자체 기능인 chroot, 네임스페이스(namespace), cgroup을 사용해서 성능 손실이 거의없다.

기존의 가상머신과 비교하자면 간단하게

  1. 리눅스 자체 기능을 사용해서 가상화공간을 만든다→ 성능손실이 없다.
  2. 커널을 공유해서 만들어서 라이브러리 및 실행파일만 있다. → 용량이 작다.

즉, 개발자들이 중요시 하는 생산성과 효율이 증가한다는 것이다.

[Docker] 도커란? - 도커 개념 정리

Docker란?

커널이란? OS 커널 구조와 유형(Micro Kernel, Monolithic, Hybrid)