도커(Docker)는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 서비스이다.
이를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 공유, 격리화 하여 관리할 수 있다.
리눅스 컨테이너(Linux Containe)?
- 리눅스 컨테이너는 리눅스 기반의 기술 중 하나이다.
- 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 말한다.
- 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유하고 있다.
도커 허브에 올라온 이미지와 docker-compose.yml
의 설정으로 원하는 프로그램을 편하게 설치가 가능하며, 컨테이너를 생성하여 분리된 환경에 설치하므로 제거도 쉽다.
하나의 서버(로컬 호스트)에 포트만 변경하여 동일한 프로그램을 실행하기 쉬우며, 도커를 사용하지 않았을 때 환경변수나 경로 등의 충돌이 잦다.
도커가 등장한 이후로 어떠한 프로그램도 컨테이너로 만들 수 있으며, 서로 다른 프로그램이더라도 컨테이너로 규격화 되었다.
AWS, Azuer, GCP 등 어떤 환경에서도 돌아간다.
가상머신과 비슷하게 생각할 수 있지만 비슷한점과 다른점이 있다.
가상머신처럼 독립적으로 실행되지만, 가상머신보다 빠르고 쉽고 효율적이다.
도커는 컴퓨터 자원을 그대로 사용한다.
도커는 가상머신이 아니고 격리만 해주기 때문에 성능상 하락이 없다.
확장성과 이식성
표준성
이미지
설정관리
자원관리
클라우드 이미지보다 관리하기 쉬우며, 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능 저하가 거의 없다.
코드와 설정으로 관리하여 재현 및 수정이 가능하며, 오픈소스이므로 특정 회사 기술에 종속적이지 않다.
출처 - wooody92's blog, 하나몬