
도커란?
도커란 데이터 또는 프로그램을 격리시키는 기능을 말한다. 데이터나 프로그램을 격리시키는 이유는 여러가지가 있는데, 우리가 실제로 쓰고 있는 컴퓨터나 핸드폰에 비유하면 조금 더 쉽다.
컴퓨터나 개인용 서버에서는 동시에 여러 프로그램을 동시에 켜놓고 사용할 수 있다. 한 프로그램은 인터넷 브라우저, 또 다른 프로그램은 게임을 띄워놓고 할 수 있는 것이 그 대표적인 예다.
대부분의 프로그램은 단독으로 동작하는 것이 아니라 어떤 실행 환경이나 라이브러리, 다른 프로그램을 이용한다. 이때, 각 프로그램이 컴퓨터에 요구하는 환경이 다를 수 있다. 어떤 시스템이 업데이트 되면서 ‘무슨무슨 프로그램‘의 2.x.x 버전을 요구하는 한편, 다른 한쪽에서는 1.x.x 버전을 요구할 수 있는 것이 그 예다. 각각 요구되는 사항이 다르면 한 컴퓨터를 두 프로그램이 공유하여 사용할 수 없게 될 수 있다.
컨테이너란?
따라서, 이 문제를 해결하기 위해 도커는 ‘컨테이너’라고 하는 격리 기능을 제공한다. 도커에서 권장하는 것은 한 컨테이너 당 한 프로그램인데, 이 권장사항을 따른다면 각 컨테이너는 한 프로그램만 시행되므로 여러 프로그램이 한 컴퓨터에서 실행되며 충돌할 수 있는 가능성이 없어지게 된다.
앞서 말했듯 ‘컨테이너‘는 각 프로그램을 독립적으로 실행될 수 있게 해주는 도구이다. 말 그대로 한 소프트웨어를 컨테이너에 넣고 문을 닫아버리는 것이다. 그렇게 되면 그 컨테이너 안에서는 한 컨테이너만 실행될 수 있게 해준다.
컨테이너 구성은 직접 할 수도 있지만, 보통 외부(도커 허브)에서 다운받아서 간단히 실행시킬 수 있다. 이를 이미지라고 부르며, 이미지를 다운로드 받아 컨테이너를 구성할 수도 있고, 현재 가지고 있는 컨테이너에서 이미지를 추출해 사용할 수 있다. 또한, 이를 본인이 원하는 대로 개조할 수도 있다.
이미지란?
여기서 이미지라는 단어가 나와 당황했을 수도 있다. 이미지는 흔히 사진으로 번역되는데, 컨테이너의 사진을 그대로 찍어 업로드 하는 것을 생각하면 쉽다. 컨테이너 내부의 사진을 토대로 다른 컨테이너 내부를 똑같이 구성하는 것이라고 생각하면 된다. 다시 말해, 컨테이너의 설계도라고 생각하면 쉬울 것이다.
서버란?
도커를 운영하게 되면, 서버라는 단어를 마주하게 된다. 앞으로 도커를 서버에 올려 사용하게 될텐데, ‘서버‘라는 익숙하고도 먼 단어를 먼저 정의하고 시작할 것이다.
서버(Server)는 단어 그 자체로 해석할 수 있는데 어떤 service를 serve하는 것이다.
- 그림과 실습으로 배우는 도커&쿠버네티스
먼저, 물리적 의미의 서버와 기능적 의미의 서버로 구분할 수 있다. 물리적 서버란 우리가 사용하고 있는 컴퓨터 그 자체로 이해하면 편하다. 데스크톱 컴퓨터와 마찬가지로 어딘가에 물리적으로 존재하는 컴퓨터이다. 그리고 그 물리적 서버 안에 ‘무슨 무슨‘ 기능을 제공하는 것이 바로 기능적 서버이다. 풀어서 말하면, ‘메일‘의 기능을 제공하면 메일 서버이고, ‘웹‘의 기능을 제공하면 웹 서버라는 말이다. 흔히 물리적 서버(컴퓨터) 안에 기능(소프트웨어)를 올려서 사용하게 된다.
왜 도커를 사용하는가?
이는 이어질 문서에서 더 깊게 다룰 것이지만, 도커를 사용하는 이유는 여러가지가 있다. 그 중 하나는 컨테이너의 이동이 쉽다는 것이다. 도커(Docker)라는 말 자체가 항구에서 정박하고 나서 선적과 하역을 담당하는 사람들을 칭한다. 즉, 도커는 컨테이너가 이동하는 것처럼 여기 저기 이동하면서 사용할 수 있다.
사실 직접 이동은 아니고, 컨테이너를 삭제한 뒤에 다른 곳에서 다시 만드는 방법이지만, 이미지를 사용하여 간단하게 지운 뒤 다른 곳에서 설치할 수 있기에 이를 이동이라고 부른다.
결론
도커는 각 프로그램별로 독립된 환경을 제공해주는 도구이다. 사용자는 서버에 올라간 도커를 통해 여러 프로그램의 환경 변수들을 제어하여 충돌을 방지한다. 도커는 이미지를 사용하여 쉽게 이동하거나 복원할 수 있기에 사용된다고 할 수 있다.




