뭐든지 기초 개념과 동작원리를 알아야 그 분야에 대해 이해가 잘 됩거니다. 마찬가지로, 저는
도커를 공부하면서 가장 중요하게 생각하는 것이 동작원리라 생각합니다. 도커의 동작원리를 모른다면 아무리 삽질하고, 따라한다 해도 이해하지 못할 것입니다.
일반적으로 도커와 컨테이너는 서버에서 사용되며, 아래 그림과 같은 구조를 보여줍니다. 물론 더 복잡하지만 처음 접하는 사람들은 이 정도만 이해해도 됩니다!!!

컨테이너 속을 확인해보자
- 컨테이너 속은 어떤 구조로 되어있을까?
'컨테이너에 넣는다'는 표현한다면 빈 컨테이너에 무엇을 넣는 생각을 할 수도 있습니다. 그러나 실제로 텅 빈 컨테이너는 잘 사용하지 않습니다.
- 컨테이너 구조를 더 본다면, 모든 컨테이너에는 '리눅스 운영체제 비슷한 무언가'가 들어 있습니다!! 적절한 예를 들자면, 술집에서 기본안주가 나오듯 컨테이너에도 '리눅스와 비슷한 운영체제 비슷한 것'이 딸려 나옵니다. 즉 빈 컨테이너라 했지만 정말 텅 비어있진 않습니다.
여기서 '리눅스와 비슷한 것'은 무얼 말하는 것 일까?? 아래에서 설명 할거지만 정말 운영체제와 비슷한 것이고, 실제 운영체제는 아닙니다.
운영체제가 하는 일은??
- 운영체제는 소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할을 합니다.
- 예를 들자면, 사람에게 귤을 먹으라고 지시한다면 '귤을 먹어' 라고만 말하면 알아서 먹겠죠??
그러나 하드웨어에게 지시하려면 '오른쪽 탁자위에 있는 두번째 귤을 들고, 껍질을 깐다음 6조각으로 나누어서 먹어'라고 구체적인 지시를 하지 않는다면 하드웨어는 귤을 먹을 수 없습니다.
리눅스 운영체제 비슷한것 ?
-
위에서 말한 것 처럼 리눅스 비슷한 것이 있다고 했습니다. 말만 들으면, 약간 애매모호? 기묘한 느낌이 들죠?? 이게 바로 도커의 가장 큰 특징입니다.
본래 운영체제는 '커널'이라는 부분과 '그 외의 주변 부분'으로 구성 되어 있습니다.
여기서 '그 외의 주변 부분'이 커널에 내용을 전달하고 커널이 하드웨어를 다룹니다.
-
도커는 컨테이너가 완전히 분리돼 있으므로 밑바탕이 되는 리눅스 운영체제의 주변 부분이 컨테이너속 프로그램의 명령을 전달받을 수 없습니다. 따라서 컨테이너 속에 운영체제 주변 부분이 들어 있어 프로그램의 명령을 전달받고 이를 밑바탕이 되는 커널에 전달하는 구조로 이루어져 있습니다.![업로드중..]()
컨테이너 속에 '리눅스 운영체제 비슷한 것'이 들어 있는 것은 이 때문입니다. 전체 리눅스 운영체제가 들어있는 것이 아니라 주변 부분만 들어 있기 때문에 '비슷한 것' 이라는 표현을 사용하였습니다.
-
간단하게 리눅스 운영체제 전체를 컨테이너 속에 넣으면 되지 않을까 싶지만 주변 부분만 컨테이너에 넣고, 커널은 밑바탕에 있는 것을 빌려 쓰는 형태 덕분에 도커의 가장 큰 특징인 '가벼움'을 얻을 수 있습니다.
도커는 기본적으로 '리눅스용' 이다.
- 도커는 기본적으로 리눅스 운영체제에서만 동작합니다.
- 이유는 간단합니다. 도커는 밑바탕에서 리눅스 운영체제가 동작하는 것을 전제로 하는 구조로 되어 있기 때문에 리눅스 운영체제에서만 동작할 수 있습니다.
- 또한 컨테이너 안에 들어 있는 주변 부분도 리눅스 운영체제의 주변 부분이어야 합니다.
- 컨테이너에서 실행할 소프트웨어 역시 리눅스용 소프트웨어 입니다. 윈도우나 macOS용 소프트웨어는 컨테이너에 넣어도 동작하지 않는다.
- 즉 도커는 리눅스 컴퓨터에 독립된 격리 환경을 만드는 것이며, 리눅스에서만 동작하고, 컨테이너에서 동작할 프로그램도 리눅스용 프로그램이다.