[Docker] 도커란 무엇인가?
도커란 무엇일까?
도커(Docker)란?
: '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어
: 주로 서버에서 사용
: 컨테이너(조립형 창고)를 다루는 기능을 제공하는 소프트웨어
Ex)
- 우리는 컴퓨터에서 워드, 엑셀 등 다양한 프로그램을 동시에 사용하는데, 도커는 이처럼 다양한 프로그램과 데이터를 독립된 환경에 격리하는 기능을 제공하는 것을 말함
도커 엔진(Docker Engine)이란?
: 도커 소프트웨어의 본체
: 컨테이너를 생성하고 구동시킬 수 있음
: 컨테이너 생성을 위해 이미지(컨테이너의 빵틀)가 필요
* 이미지의 종류는 많으며, 담고 있는 소프트웨어 종류에 따라 다양한 이미지를 사용 / 아파치 컨테이너 생성에서는 아파치 이미지를 사용
* 컨테이너는 여러개 생성이 가능
참고) 도커 사용 제약사항
- 종류 상관없이 리눅스 운영체제가 필요
- 컨테이너에 동작시킬 프로그램도 리눅스용 프로그램
데이터나 프로그램을 독립된 환경에 격리해야 하는 이유가 있을까?
이유1.
대부분의 프로그램은 프로그램 단독으로 동작하는 것이 아닌 어떤 실행 환경이나 라이브러리, 다른 프로그램을 이용해 동작
이유2.
다른 프로그램과 특정한 폴더 또는 디렉터리를 공유하거나 같은 경로에 설정 정보를 저장하는 경우
이 상황에서 업데이트를 하거나 충돌이 발생한다면?
프로그램은 동작할 수 없다.
즉, 문제의 원인은 프로그램 간 공유때문에 발생
도커 컨테이너를 사용해 프로그램을 격리할 경우,
1. 여러 프로그램이 한 서버에서 실행되면서 발생하는 문제 대부분을 해결할 수 있음
2. 독립된 환경으로 여러 컨테이너에서 같은 프로그램을 실행할 수 있음 (버전이 완전히 동일해도 상관없음)
서버와 도커
도커는 서버에서 사용되는데 그렇다면 서버는 무엇일까?
서버란?
- 기능적 의미
: 어떤 서비스를 제공하는 것
- 물리적 의미
: 데스크톱 컴퓨터와 마찬가지로 어딘가에 물리적으로 존재하는 것
서버의 기능은 소프트웨어가 제공하는 것으로, 소프트웨어를 설치하면 '서버'의 기능을 가지게 됨
즉, 웹 서버용 소프트웨어를 설치하면 웹서버가, 메일 서버용 소프트웨어를 설치하면 메일 서버가 되는 것을 말함
서버의 기능이 소프트웨어에서 나온다. = 여러가지 소프트웨어를 한 컴퓨터에 설치할 수 있다.
즉, 여러 기능적 의미의 서버가 하나의 물리적 컴퓨터에 함께 존재할 수 있다.
도커의 장점
1. 독립적인 환경에서 안전하게 운영할 수 있으며, 업데이트에도 서로에게 영향을 미치지 않음
2. 컨테이너 기술을 활용하면 여러 개의 웹 서버를 올릴 수 있음
3. 물리 서버 한 대에 여러 개의 웹 서버를 띄우면 그만큼 물리 서버 수를 줄일 수 있음
컨테이너를 자유로이 옮길 수 있다?
컨테이너를 어떤 도커 엔진에서 다른 도커 엔진으로 옮기는 것은 어렵지 않은데,
이를 활용하면 배포를 통해 모두가 동일한 개발환경을 사용할 수 있게 됨
도커가 있다면 운영체제가 달라도 신경쓰지 않고 컨테이너를 옮길 수 있으며, 물리적 환경 / 서버 구성의 차이 무시 가능함