최근의 IT트렌드에서 도커는 이제 개발환경의 표준이 되어가는 느낌이다. 최근에 와서야 OCI니, CIR니, Podman, AWS ECS, EKS 등 다양한 컨테이너 플랫폼의 등장과 대 클라우드 시대의 도래로 조금 빛이 바랬다고는 하지만, 여전히 VPS 환경 내에서 도커를 설치해 운용하는 회사도 많고 On-Premise 기반의 서비스/솔루션을 구축하는 회사도 적지 않은 편이다. (이렇게 말하는 필자의 회사 역시 따로 서버실을 두고 온프렘 기반의 솔루션이 주력인 회사다. 클라우드로 재편성을 하자고 그렇게 건의했는데, 대표님은 보안 관련해서 아직 생각이 많으신것 같다...ㅜㅜ)
그래서! 이번엔 지금껏 잘 써오고 있던 도커를 천천히, 하나하나 정리해보려 한다.
도커 개요
도커는 Dock + er이다. Dock, 즉 항만 부두를 뜻하는데, 항만 하면 생각나는건 덩치큰 화물선과 대량으로 쌓인 컨테이너들이다. 마찬가지로, 도커는 컨테이너(Container)라는 초소형 격리 환경을 구축하고, 그 환경들을 컨트롤할 수 있도록 한다. 생성, 삭제, 내부 구조 변경, 새로운 물자의 입출입, 이름 변경 등... 사실 도커보단 골리앗 같은 이름이 되었어야 하는게 맞지 않나 싶다.
도커의 근간을 이루는 머신은 바로 도커 엔진이다. 이 친구가 바로의 도커의 뿌리인데, 길게 설명하기엔 내 지식이 모자라니 가볍게 알아보도록 하자.
위 사진은 도커와 VM(가상머신)의 차이를 가장 쉽고 직관적으로 보여준다. Server, 즉 베어메탈의 하드웨어가 기반이 되고, 해당 하드웨어를 제어할 Host OS(본체에 깔린 OS)가 설치되고, 우리가 사용하는 수준은 Host OS 위에서 각종 어플리케이션 및 종속성이 실행되는 것이다.
도커를 쓰지 않으면 딱 여기까지만. 그리고 도커/VM같은 가상화 도구를 사용하게 되면, 이 위에 Hypervisor라는 가상화 도구를 올린다. 하이퍼바이저가 구동하게 되면, 요 친구가 호스트의 자원을 컨트롤하여 위에 올라갈 가상화 도구에 cpu, 메모리 등 자원을 할당해주는 것이다.
그리고 VM의 경우 이 위에 OS 이미지를 이용해 Guest OS, 즉 가상화된 VM을 가동하게 되는데, 온갖 관리자는 물론이고 본래는 컨트롤 할 수 없는, 각종 하드웨어 컨트롤을 위한 패키지 역시 설치하게 된다. 그 위에 어플리케이션을 위한 종속성을 설치하고, 다시 그 위에 어플리케이션을 올리고... 방금 막 깔은 깔끔한 OS에서도 작업관리자를 보면 실행되는 각종 프로세스가 많은데, 그 위에 또 OS를 올리니 무거워지고...복잡한 구조만큼 당연히 성능은 떨어지게 된다.
그에 비해 도커는 하이퍼바이저+게스트 OS의 단계가 통합된다. 위에 올라가는 OS겸 가상화를 도커 엔진이 담당하고, 우리는 그 위에 종속성+어플리케이션이 설치된 컨테이너를 실행하기만 하면 끝. 심플한 구조만큼 설치는 빠르고, 실행은 간결하며, 관리는 쉬워진다.
각 컨테이너는 프로세스적으로 독립을 이루고 있으며, 도커 엔진에서 제공하는 각종 모듈을 이용해 컨테이너끼리 붙였다 뗐다가 할 수도 있다. 당연히 컨테이너간 통신 역시 가능하며, 통신을 docker0라는 브릿지가 담당하게 되지만, 도커 네트워크에 관련된 이야기는 다음에.
독립적 프로세스라는건 컨테이너 상호의 동작이 서로에게 영향을 미치지 않는다는 것이다. A 컨테이너에서 무슨 작업이 벌어지든 B, C 등 병렬적으로 실행되는 각종 컨테이너에는 아무런 영향이 없다는 것이다. 쉽게 비유하자면 도커는 자유게시판이고, 컨테이너들은 그 안에 쓰여지는 글과 같다. A글에서 온갖 난리를 쳐놔도, 다른 B, C 글에는 아무런 영향이 없는 것처럼.
도커 Getting Start
도커 데스크탑 설치(Windows/MacOS) : https://www.docker.com/get-started
Get Started with Docker | Docker
Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives.
www.docker.com
도커의 설치에 관해선 Linux/Windows가 각각 다르다. Windows는 도커 데스크톱이라는 프로그램을 설치하기만 하면 도커가 알아서 설치되고 모든걸 다 해준다. 거기에 더해 GUI 기반의 관리 도구까지 제공한다. 추가로 싱글 노드 쿠버네티스까지 지원하지만, 쿠버네티스 역시 나중에.
기타 OS의 경우 : https://docs.docker.com/engine/install/
Install Docker Engine
docs.docker.com
다른 OS들은 좀 복잡하다. 하지만 상기한 두 OS 이외를 사용한다면 분명 개발자/엔지니어 일테니, CLI 환경은 익숙하리라 믿는다. 설치방법은 위의 링크를 타고 들어가서 본인에게 맞는 OS를 눌러 이동하자.
'DevOps > docker' 카테고리의 다른 글
apk update temporary error (try again later) 해결 - 2 (0) | 2021.10.13 |
---|---|
apk update temporary error (try again later) 해결 - 1 (0) | 2021.10.13 |
nginx로 웹 서버 로드밸런싱하기 (0) | 2021.08.19 |
docker stop/rm 불가능 현상 해결 (0) | 2021.08.05 |
docker_tutorial:command1 (0) | 2021.05.29 |