Docker는 애플리케이션이 어떤 환경에서도 동일하게 실행될 수 있도록 도와주는 플랫폼입니다.
예를 들어, 개발할 땐 Mac을 쓰고, 서버는 Linux를 사용하더라도 Docker를 이용하면 환경 차이에 대한 걱정 없이 실행할 수 있습니다.
Docker는 애플리케이션을 컨테이너(Container) 라는 독립된 환경에서 실행할 수 있게 해주는 도구입니다. 이를 통해 얻을 수 있는 대표적인 장점은 다음과 같습니다.
Docker는 컨테이너라는 독립된 환경 안에서 애플리케이션을 실행합니다. 이 컨테이너는 운영체제에 종속되지 않기 때문에, 개발 환경, 테스트 환경, 운영 환경 등 어떤 환경에서도 동일하게 애플리케이션이 동작합니다.
Docker 이미지는 애플리케이션 실행에 필요한 설정, 종속성, 라이브러리 등을 모두 포함하고 있어, 환경 차이로 인한 문제를 최소화할 수 있습니다.
운영체제나 버전 차이, 설정 누락 같은 이슈 없이 항상 동일한 환경을 보장합니다.
Docker는 마이크로서비스 아키텍처를 손쉽게 구성할 수 있게 도와줍니다. 여러 개의 컨테이너를 클러스터링하여 관리할 수 있어, 서비스 확장이나 분산 처리에 유리합니다.
Docker는 가상 머신에 비해 훨씬 가볍습니다. 운영체제를 전체로 복사하지 않고 필요한 부분만 격리하기 때문에 리소스를 적게 사용하며, 실행 속도도 빠릅니다.
개발자들이 동일한 환경을 손쉽게 구축할 수 있어, 환경 설정에 드는 시간을 줄이고 개발에만 집중할 수 있습니다.
컨테이너는 애플리케이션과 그 실행에 필요한 라이브러리, 설정 등을 하나의 독립된 패키지로 묶은 것입니다.
마치 상자 안에 실행 환경을 담아 어디에서든 똑같이 작동하도록 만든 것입니다.
컨테이너는 전체 운영체제를 포함하지 않고 필요한 부분만 격리하기 때문에 가볍고 빠르며, 독립적인 환경을 제공합니다.
❗️ 컨테이너 = 하나의 컴퓨터 환경 내에서 독립적으로 동작하는 '미니 컴퓨터'

위 그림에서 보이는 컴퓨터는 호스트 컴퓨터입니다. 이 호스트 컴퓨터는 여러 개의 컨테이너를 실행하고 있습니다.
컨테이너는 가상화된 작은 독립 환경이고, 호스트 컴퓨터는 이 컨테이너들이 실행되는 실제 하드웨어 또는 가상화된 컴퓨터입니다.
컨테이너는 어디서든 실행될 수 있으며, 이 컨테이너를 구동하는 환경(컴퓨터 또는 서버)을 호스트 컴퓨터라고 부릅니다.
이미지는 컨테이너를 만들기 위한 설계도(Template)입니다.
애플리케이션과 필요한 실행 환경, 설정 등을 포함한 파일로, 이 이미지를 기반으로 컨테이너가 생성됩니다.
$ docker pull nginx

$ docker image ls

ls는 list의 약자입니다.$ docker run --name webserver -d -p 80:80 nginx
--name webserver: 컨테이너 이름을 webserver로 지정-d: 백그라운드 모드로 실행-p 80:80: 포트 포워딩 (호스트의 80번 포트를 컨테이너의 80번 포트에 연결)
localhost:80 을 입력하여 Nginx 서버가 실행 중인지 확인합니다.
$ docker ps

$ docker stop webserver

