서버라는 단어는 IT 산업에서 흔히 접할 수 있는 용어 입니다.
서버를 정의하면 “하드웨어와 하드웨어에서 실행 중인 소프트웨어” 입니다.
Serve, Service, Serving 즉, 어떤 요청에 대한 결과를 제공하는 것을 서버라고 할 수 있습니다.
서버는 어떤 소프트웨어가 실행 중인지에 따라 다양하게 분류할 수 있습니다.
도커는 컨테이너 가상화라는 새로운 기술의 가상화와 관련이 있습니다.
최근에는 하이퍼바이저 가상화 기술보다 선호되는 기술인데, 이유는 상대적으로 더 가볍고 빠르기 때문입니다.
예를 들어 웹 서버 구동시간을 비교해보면 하이퍼바이저 가상화가 60s가 걸리는데 반해 도커(컨테이너 가상화)는 3s 밖에 걸리지 않습니다.
가상화 기술은 큰 서버를 나눠서 사용할 수 있는 기술을 의미하며,
하이퍼바이저를 사용한 가상머신 기술을 사용하면 각각 Guest OS가 독립적인 커널을 가지기 때문에 실행시간이 오래걸리고 하나의 Guest OS가 차지하는 오버헤드가 큽니다.
컨테이너 가상화는 커널이 자체적으로 제공하는 가상화 기술을 통해 가볍고 빠르다는 특징을 가지나 사용자가 직접 컨트롤 하기 어렵다는 단점이 존재합니다.
이러한 단점을 보완하기 위해 Docker 라는 S/W를 통해 커널의 컨테이너 가상화 기술을 편하게 사용할 수 있습니다.
컨테이너 라고 합니다. 즉, 모든 컨페이너가 하나의 커널을 공유합니다.도커는 2013년 최초로 공개된 오픈소스 소프트웨어로, 컨테이너 가상화 기술을 사용하기 위한 도구(컨테이너 플랫폼) 입니다.
도커는 컨테이너 엔진, 컨테이너 런타임으로 구성되어 있으며, 각각의 역할은 다음과 같습니다.
도커는 클라이언트-서버 모델 (도커 데몬 또는 dockerd) 로 실행됩니다.
docker daemon(서버) 로 전달하고다만, 사용자가 일일히 api를 확인하고 api에 맞게 명령을 보내기 어렵기 때문에 Docker에서 Docker CLI 를 클라이언트 툴로 제공합니다.
이 CLI는 사용자가 명령어를 입력하면 서버 API 양식에 맞게 만들어서 전달하며, 이를 통해 서버(docker demon)과 손쉽게 통신할 수 있습니다.
nginx 웹서버 컨테이너 실행 및 컨테이너가 제공하는 웹사이트 접속해보기
docker version // client, server의 버전 및 상태 확인
docer info // 플러그인, 시스템 상세정보 확인
docker --help // 메뉴얼 확인
docker container --help
docker run (실행옵션) 이미지명 // 컨테이너 실행
docker rm 컨테이너명 또는 ID // 컨테이너 삭제
docker run -p 80:80 --name hellonginx nginx
// 위 명령어 실행 시 cli가 명령어를 컨테이너 실행 API에 맞게 만들어 docker demon에 전달
// docker demon은 요청을 분석하고 컨테이너 런타임을 통해 컨테이너 생성
// localhost에 접속하면 컨테이너에서 실행 중인 Nginx 프로세스에서 요청을 전달받아 웹페이지 제공위와 같이 컨테이너를 생성해서 프로세스를 실행시키면 디스크나 네트워크, 메모리, CPU 같은 공간이 완전 격리된 공간에서 실행시킬 수 있습니다.
하이퍼바이저와 비교했을 때, 단순한 명령어 한줄로 빠르게 웹서버를 구성할 수 있다는 장점이 있습니다.
이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗