Doker 란?
Doker는 컨테이너 기반의 오픈 소스 가상화 플랫폼이다.
Doker를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있다.
Doker를 통해 OS를 공유, 격리화 하여 관리할 수 있다.
container 란?
Doker는 코드를 실행하는 표준 방식을 제공하고, 컨테이너를 위한 운영 체제이다. 가상머신이 서버 하드웨어를 가상화하는 방식과 비슷 하게 컨테이너는 서버 운영 체제를 가상화 한다. 그리고 Doker는 각 서버에 설치되며 컨테이너를 구축, 시작 또는 중단하는데 사용할 수 있는 간단한 명령을 제공한다.
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술이다. 가상화 기술의 하나지만 기존방식과는 차이가 있고 기존의 가상화 방식은 주로 OS를 가상화 하였다.
Doker의 container 기술을 사용하면 OS레벨은 공유 하며 어플리케이션 레벨에서는 각가의 어플리케이션을 격리해서 실행 할 수 있다. 그래서 하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행 할 수 있다. CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 호스트의 특정 디렉토리를 내부 디렉토리인 것처럼 사용할 수도 있다.
image 란?
Doker에서 Image는 컨테이너를 정의하는 읽기 전용 템플릿이다. 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는다. 같은 이미지에서 여러개의 컨테이너를 생성 할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.
Doker 명령어
docker ps -a -q
docker images -q
이 외에 많은 명령어가 있다. 참고
Doker의 장단점
실행 속도가 빠르다.
container들끼리는 분리 되어있기 때문에 보안상 이점이 있다.
실행환경 구성이 빠르고 간단하다.
container의 크기가 매우 작고, 하나의 물리적 서버에 다수의 컨테이너를 가동 시킬 수 있다.
리눅스용 소프트웨어밖에 지원하지 않는다.
호스트 서버 문제가 생기면 모든 컨테이너에 영향을 미친다.
프로그램을 여러 개 운영 하는 것이 아니라 하나만 운영할 경우 오히려 오버헤드가 커질 수 있다.