책에서는 도커는 '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어라고 한다
각각의 프로그램은 도커 위에서 작동하게 되는데
이렇게 분리한 조립형 창고를 컨테이너라고 한다. 그리고 이 컨테이너를 다루는 기능을 제공하는 것이 도커이다. 그렇다면 여기서 이 도커를 사용하고 구동시키기 위한 도커 엔진이 필요하다
도커 엔진이 기반으로 컨테이너를 동작할 수 있으며, 또한 이미지가 필요하다
컨테이너는 용량이 허락하는한 여러개를 만들 수 있다
맥이나 윈도우에서 도커를 사용한다더라도 리눅스 운영체제가 필요하며, 컨테이너 동작시킬 프로그램도 리눅스용 프로그램이다.
예시) 프로그램 A, 프로그램 B가 프로그램 C를 연동하여 사용하고 있다고 하자.
만약 연동되고 있는 프로그램 C를 5.0 -> 6.0으로 업데이트 했다고 하자.
하지만 프로그램 A는 5.O버젼에서만 작동이 된다면 오류가 발생할 것이다.
이런 원인은 프로그램간의 공유에서 발생을 한다.
또한 설정파일이 섞이거나 충돌이 발생할 수 있다.
그래서 도커 컨테이너를 사용하면 완전한 분리를 하여 다른프로그램과 격리상태가 된다.
프로그램 A - 프로그램 C (5버젼) | 프로그램 B - 프로그램 C(6버젼)
컨테이너는 자유로이 옮길 수 있다!
도커를 사용하면 물리적 환경의 차이, 서버의 구성의 차이를 무시할 수 있다.
즉, 도커 엔진만 설치가 되어 있따면 어느 서버에서든 컨테이너는 동일하게 작동한다(운영체제가 달라도 이를 신경쓰지 않아도 됨!)
-> 이런 특성을 이용하여 똑같은 상태로 튜닝한 컨테이너를 팀원 전원에게 배포하여 동일한 개발환경을 사용할 수 있다.
도커의 컨테이너는 쓰고 버리는 일회용품과 같은것이라고 한다.
즉, 하나의 컨테이너를 업데이트 하기보단, old 버젼의 컨테이너는 버리고, 새로운 버젼의 컨테이너를 만든다.
만들고, 실행하고, 종료하고, 폐기 이를 컨테이너의 생명주기라고한다.
컨테이너에서는 커널(운영체제의 핵심이 되는 부분) 을 포함할 필요가 없다. 그래서 가볍다.
이동성, 생성, 보안, 여러 개