관리 메뉴

제뉴어리의 모든것

[Udemy] Docker - Java 개발자를 위한 완벽 실습 과정 - 1,2,3장 본문

Docker

[Udemy] Docker - Java 개발자를 위한 완벽 실습 과정 - 1,2,3장

제뉴어리맨 2023. 2. 28. 21:25

Docker의 필요성

 

배포 환경과 개발환경을 일치시켜서 개발환경과 배포환경이 다르므로 발생할 수 있는 상황을 방지하기 위함.

 

 

Docker에서의 Image와 Container 개념

 

Docker 컨테이너는 아래와 같이 여러 프로그램이 설치될 수 있는 환경을 말한다.

환경이므로 컨테이너 내부에서만 쓰이는 환경변수 또한 설정할 수 있다.

그리고 이러한 컨테이너는 외부, 즉 컨테이너가 구동중인 컴퓨터 기준으로 보았을 때는 단순히 하나의 프로세스(프로그램)일 뿐이다. 

하지만 일반적인 프로세스와는 매우 큰 차이가 있다.

바로 각각의 컨테이너(프로세스)는 호스트 시스템과는 별개의 파일 시스템, 네트워크, 권한 등 다른 환경을 가지고 있다는 것이다. 

 

그리고 이러한 컨테이너를 구동시키기 위해 필요한 것이 Docker 이미지인데,

프로그래밍 관점으로 보자면 이미지가 클래스, 컨테이너가 클래스로 생성한 인스턴라고 보면 된다.

그러므르 Docker 이미지를 구동(Run) 시키면 컨테이너의 인스턴스가 생성되어 구동 된다고 보면된다.

그래서 아래와 같이 하나의 이미지로 여러 컨테이너를 만들 수 있다.

이 점이 바로 Docker를 사용하는 이유이며, 앞서서 말한 Docker의 필요성이다.

다른 개발자에게 혹은 새로운 클라우드 서버에 우리가 개발한 서버 프로그램을 배포하기 위해서 기존에는 배포할 서버의 환경을 개발 환경과 동일하게 만드는 일련의 과정이 필요했다.

그리고나서 우리는 해당 서버에 개발한 서버 프로그램을 구동시켰다.

그러나 Docker를 사용하면 배포할 서버에 Docker만 설치되어 있다면, 개발 환경과 배포 환경을 일치시켜주는 작업의 필요 없이 위에 그림처럼 한번 만들어 놓은 Docker 이미지를 구동만 시키면 컨테이너가 작동되어 바로 서버 프로그램이 구동될 것이다. 왜냐하면 서버 프로그램은 컨테이너라는 작은 가상공간에 이미 작동하고 있기 때문이다. 

 

컨테이너 VS 가상머신

 

컨테이너 : OS를 포함하지 않는 하나의 프로세스로써 호스트 PC의 OS를 공유함. (리눅스 커널위에 작동 중인 프로세스) 

가상머신 : 하나의 가상머신은 호스트 PC와는 별도의 OS를 가지고 있음

 

참고로 Docker는 리눅스 환경에서만 작동이 가능하다.

그런데 Windows에서 작동 가능한 것은 Windows 환경에서 별도의 리눅스 가상 환경이 구축되있기 때문에 가능한 것이다.

 

Docker 설치

Docker의 설치는 PC의 OS에 따라 각기 다르다.

자세히 설치 방법은 Docker 공식사이트와 검색을 통해 알아보자.

특히 Windows 10 이상에서의 환경에서 말하자면 wsl을 설치하여 내 PC에 리눅스 환경을 별도로 설치해 주면 된다.

그리고 Docker Desktop을 설치해주자.