진짜 개발자
본문 바로가기

Infra/Docker

Docker - Docker란?

728x90

Docker이란?

- 리눅스의 Container 기술을 이용해 가상머신처럼 하드웨어의 자원을 완전히 가상화 하지 않고 프로세스들만을 격리시켜 빠르게 어플리케이션 환경을 구축 및 배포할 수 있게 해주는 기술


- 가상머신처럼 독립된 환경을 만들어주는 도구이다


사용이유?

- 리눅스의 커널을 제외한 배포판을 이용하여 각각의 독립된 환경인 컨테이너를 생성하고 관리하므로

  가상머신보다 훨씬 가볍고 빠르다


- 가상 서버를 생성하면 그것에 내가 서비스하기위한 환경 및 서버를 설정해야 한다 한 두대의 서버는 직접 가능하겠지만

  클라우드의 환경에서 수천대의 서버를 관리하기 위해서는 조금 더 효율적인 방법이 필요했다 


- 서비스 환경을 갖춘뒤 그것을 이미지로 만들어 배포하면 여러 서버에서 간단히 그것을 실행 하므로써 서비스

   운영 환경이 갖추어지기 때문



용어

1) Image

- 어떠한 개발 환경을 구축하기위해 필요한 라이브러리 및 패키지를 모아 하나의 파일로 만들어 둔것

- 운영체제의 프로그램과 비슷하다

- docker image는 컨테이너와 별개이다 즉 컨테이너에서 변경한 내용들은 image에 적용되지 않는다

- 1. base image : 리눅스 배포판의 유저랜드만 설치된 파일

  2. Docker image : 베이스이미지에다가 필요한 프로그램, 라이브러리 , 소스를 설치한뒤 하나의 파일로 만든 것


2) Container

- 이미지가 실행된 형태

- 컨테이너에서 파일을 만들거나 서비스를 설치하면 컨테이너 레벨에서 저장이 되고 이미지에는 영향이 미치지 않는다

   컨테이너가 종료되더라도 다시 실행하면 이전 상태가 유지된다 따라서 완전히 제거를 하는 명령어가 따로 존재한다

- 단순히 image안의 파일을 실행할 목적으로 생성된 것 때문에 메인으로 실행되는 파일이 종료되면 컨테이너도 같이 종료된다

- 운영체제의 프로세스와 비슷하다


3) DockerHub

- Git Hub와 같이 사용자들이 Image들을 만들어 서로 공유할 수 있는 커뮤니티이다

- Git의 개발자가 Git Hub를 만들지 않은것과 달리 Docker의 개발진들이 만들었다


4) Immutable Infrastructure

- OS서비스 운영 환경(서버프로그램, Source Code)을 분리한 개념으로 한번 설정한 서비스 운영 환경은

 변하지 않는다는 개념이다


장점

1) 성능상의 이점

- 도커는 실행에 필요한 파일과 라이브러리만을 포함하고 OS를 새로 설치할 필요가 없으므로 가볍고 성능의 저하가 거의 없다(99.9%).


2) 빠른 운영환경 구성

- 미리 사용자들이 만들어 둔 이미지(개발환경)를 다운받아 실행만 하면 해당 환경을 구축할 수 있다


3) 관리의 용이
- 이미지 만을 관리 배포 하면 되므로 운영환경의 관리가 용이하다

4) 확장성
- 한번 만들어낸 이미지를 이용하여 여러 서버들에서 사용가능하다


가상머신과의 차이점

     

(기존의 서버 가상화 방법)                        ( Docker )

- 가상머신과 달리 운영체제를 별도로 필요로 하지 않는다 때문에 성능상의 이점이 있다.

 


Docker 의 네트워크 및 포트포워딩 방법

- http://bluese05.tistory.com/53