도커(Docker)는 리눅스 응용 프로그램을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 컨테이너 기반의 가상화 플랫폼이다.
도커는 2013년 Docker Inc.(Https://www.docker.com)에서 개발 하여 오픈 소스 프로젝트로 진행되는 소프트웨어이며 애플리케이션의 개발과 제공 및 실행을 위한 개방형 플랫폼으로 Docker Inc.를 비롯한 구글, 아마존, 마이크로소프트 등의 세계 유수의 기업들이 지언하는 오픈 소스 프로젝트 이다. 도커는 처믕에 리눅스 컨테이너스(Linux Containers, LXC)라는 기술을 기반으로 개발 되었지만 이후에 자체적인 기술로 발전 시켜 LXC 종속에서 벗어났기 때문에 현재의 도커는 전통적인 Linux 컨테이너와는 다른다.
리눅스 컨테이너는 격리된 공간에서 프로세스를 동작시키는 기술로 응용 프로그램의 실행 환경을 컨테이너 단위로 가상화하여 독립적인 실행 환경을 만들어 주는 기술이며 리눅스에서 프로세스 를 결리하는 방식을 리눅스 컨테이너라고 부른다.
하드웨어 가상화 기술을 제공하는 기존의 가상머신에 비해 매우 가벼우며 한 대의 서버에서 서로 독립적으로 실행되어 여러개의 서비스를 구동하기도 쉽다. 또한 하드웨어 가상화를 구성하는데 거리는 시간은 수 십분 이상인데 반해 도커 컨테이너 가상화는 겨우 몇분 이내에 가능하므로 비교할 수 없을만큼 빠르다.
도커는 기본적으로 리눅스 운영체제에서 개발되어 발전해 왔으며 데스크 톱 사용자를 위해서 Linux, Windows, macOS 용 Desktop 버전도 제공하고 있다. 우리는 EC2 인스턴스에 설치한 우분투 리눅스에서 Docker Engine을 설치해 사용할 것이다.

도커 엔진(Docker Engin)은 애플리케이션을 구축하고 컨테이너로 만들기 위한 오픈 소스 컨테이너 기술이다. 또한 도커 컨테이너를 생성하고 관리하는 주체로 도커의 핵심 기술이며 클라이언트(Docker Client)-서버(Docker Host) 형태로 동작한다.
도커엔진은 Ubuntu 리눅스를 비롯해 Debian, RHEL, CentOS, Fedora 등의 다양한 리눅스 배포판을 지원하고 있다.

먼저 Docker 공식 사이트에서 Docker Engine을 Ubuntu 리눅스에 설치하는 방법을 설
명한 다음 사이트의 문서를 참고하면서 설치하자.
먼저 우리의 EC2 서버에 도커를 설치하기 위해서 VSCode의 터미널에서 SSH로 EC2 인
스턴스에 접속하자. 그리고 위의 설치 안내 문서에 따라서 이전 버전을 삭제하는 명령을
다음과 같이 복사하자.




오류가 안나사람은 여기서 멈추면됨



설치 도중 다음과 같은 “Pending kernel upgrade” 메시지가 나타날 수 있는데 이 화면
에서 Enter를 입력 하고 다시 “Daemons using outdated libraries” 화면이 나타나면
Enter를 입력하면 설치가 완료된다.

Docker Engine 설치가 완료되면 Docker 버전을 확인할 수 있는 다음 명령을 실행하면
Docker의 Client와 Server의 버전을 확인할 수 있다.


docker 명령을 사용할 때 관리자 권한으로 명령을 실행해야 하기 때문에 매번 sudo 명
령을 사용해야 하는 불편함이 있다. 그래서 현재 사용자(ubuntu)를 docker group에 포
함시켜서 docker 명령을 sudo 명령 없이 사용하도록 설정해 보자.

이번에는 여러 개의 Docker 컨테이너를 동시에 한 번에 실행하거나 한 번에 중단 시킬
수 있는 유용한 Docker Compose 를 설치해 보자. 최신 Docker에는 Docker Compose
가 같이 설치되지만 우리는 별도로 설치하는 버전을 사용할 것이므로 아래 사이트를 참
고해 설치해 보자.


docker 명령은 키보드로 직접 입력하여 실행하는 CLI(Commend Line Interface) 방식
으로 docker 명령어의 구조는 다음과 같다.
docker [OPTIONS]
docker [OPTIONS] NAME[:TAG | @DIGEST]
docker [OPTIONS] TARGET[:TAG | :NAME…]
Docker Image는 직접 만들어 사용할 수도 있지만 일반적으로 Docker Hub를 통해서
다운로드 받아 사용하는 경우가 대부분으로 회원 가입 없이 다운로드 받아 사용할 수는
있지만 자신이 만든 이미지를 등록해서 공유하려면 회원으로 등록되어 있어야 하므로
Docker Hub(https://hub.docker.com/) 사이트에 회원으로 가입하는 것이 좋다.
만약 회원으로 가입이 되어 있다면 다음과 같이 docker 명령으로 로그인 할 수 있다.







docker stop 명령으로 중지된 컨테이너는 docker start, docker restart 로 다시 실행할 수 있음
docker pause 명령으로 실행 중인 컨테이너를 일시 정지 시킬 수 있으며
docker unpause 명령으로 일시 정지된 컨테이너를 다시 실행할 수 있음

이 컨테이너가 제대로 실행되는지 테스트하기 위해서는 컨테이너가 실행되는 호스트 컴퓨터(EC2 인
스턴스)의 8000번 포트에 대한 인바운드 규칙을 추가해서 외부에서 접속할 수 있도록 변경해야 한
다. 이렇게 설정이 되면 외부에서 호스트 컴퓨터의 8000번 포트로 요청이 들어왔을 때 이 요청은
webserver02 컨테이너의 80번 포트로 전달된다.
