•Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼이다.
•Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 것이 포함되어있다.
•Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행된다.
•AWS에서 Docker를 실행하면 개발자와 관리자가 어떠한 규모에서든 매우 안정적이며 저렴한 방식으로 애플리케이션을 구축, 제공 및 실행할 수 있다.
우리가 서버를 돌리기 위해서는 먼저 환경이 갖춰져야 한다. 하지만 이런 환경을 위해서 Node.js와 같은 런타임 환경 그리고 사용하는 언어의 버전, 데이터베이스, 수 많은 node_modules를 버전을 맞춰서 설치해줘야 한다. 예전 회사에서는 환경을 구축하는 과정을 하나씩 캡쳐하고, 기록해서 방법을 정리해두기도 했지만 가이드 문서를 바탕으로 매번 이렇게 구축하는 것은 매우 번거로운 일이여서 이 과정을 간편하게 해주는 것이 바로 도커이다.
Docker는 코드를 실행하는 표준 방식을 제공한다. Docker는 컨테이너를 위한 운영 체제이며 가상 머신이 서버 하드웨어를 가상화하는 방식과 비슷하게(직접 관리해야 하는 필요성 제거) 컨테이너는 서버 운영 체제를 가상화한다.
Docker는 각 서버에 설치되며 컨테이너를 구축, 시작 또는 중단하는 데 사용할 수 있는 간단한 명령어 들이 있다.
ex)docker build .
docker images
docker run 이미지_아이디
원하는 개발 환경을 파일에 저장하면 docker는 이를 원하는 어떤 머신에든 해당 환경을 시뮬레이션 해준다.
이러한 환경은 각기 독립적으로 존재하기 때문에 원하는 무슨 환경이든 모듈식으로 관리가 가능하다.
가상 컴퓨팅은 한 물리적 컴퓨터 안에 각각 OS를 돌리는 가상 컴퓨터들이 물리적 자원을 분할해서 쓰기 때문에 성능에 한계가 있다.
하지만, Docker는 실행환경만 독립적으로 돌리는 것이라 컴퓨터에 직접 요소들을 설치한 것과 별 차이 없는 성능을 낼 수 있습니다. 가상 컴퓨팅보다 훨씬 가볍고 빠르게 각각을 설치하고 실행하고 켜고 끄고 연동할 수 있어서 서버에 뭔가 잘못되어 고쳐야 하거나, 일부를 업그레이드해야 하거나 할 때는 일일이 요소들을 정지하고 지우거나 새로 깔 필요 없이 docker를 통해 그냥 컨테이너들을 통째로 교체하여 새로 실행하할수있다.
그래서 서비스를 배포하고 실행하는 일이 전과는 비교도 안되게 쉬워졌다.
출처