마음이 도커도커하게 해준다는 도커에 대해 알아볼께요. 재미없는 농담 미안해요
도커가 등장하기 전 서버를 관리하는 것이 매우 어려웠다고 합니다. 버전 맞추고 포트가 같으면 설치도 어렵고 서버를 늘리면서 자원은 낭비되고 등등.
도커는 2013년 3월 산타클라라에서 열린 Pycon Conference에서 dotCloud의 창업자인 Solomon Hykes가 The future of Linux Containers라는 세션을 발표하면서 처음 세상에 알려줬습니다. 이 발표 이후 도커가 인기를 얻으면서 2013년 10월 아예 회사이름을 도커(Docker Inc.)로 바꾸고 2014년 6월 Docker 1.0을 발표합니다.
다시 돌아가서 도커가 뭐냐라는 질문에 대한 답은 컨터이너 기반의 오픈소스 가상화 플랫폼 입니다. 일반적으로 생각하는 컨테이너는 화물수송용 박스로 표현할 수 있을 것이고 서버로 이야기할때도 컨테이터로 실행환경, 다양한 프로그램을 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 백엔드 프로그램, 데이터베이스 서버 등 어떤 프로그램도 컨테이너로 추상화할 수 있고 조립PC, AWS, Azure, Google Cloud등 어디서든 실행할 수 있습니다.
구글은 모든 서비스들이 컨테이너로 동작하고 매주 20억 개의 컨테이너를 구동한다고 합니다.
컨테이너는 격리된 공간에서 프로세스가 동작하는 기술입니다. 가상화 기술의 하나지만 기존방식과는 차이가 있습니다.
기존의 가상화 방식은 주로 OS를 가상화하엿습니다. 이 방식은 무겁고 느려서 운영환경에선 사용할 수 없었습니다. 이를 개선하기 위해 프로세스를 격리하는 방식이 등장합니다. 리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에서 가볍고 빠르게 동작합니다. 사실 이러한 컨테이너라는 개념은 도커가 처음 만든 것이 아닙니다. 다만 도커는 이미지라는 개념을 가져왔고 이게 도커에서 가장 중요한 개념입니다.
이미지는 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않습니다(Immutable). 컨테이너는 이미지를 실행한 상태라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장됩니다. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있습니다. 도커 이미지는 Docker hub에 등록하거나 Docker Registry 저장소를 직접 만들어 관리할 수 있습니다. 현재 공개된 도커 이미지는 50만개가 넘고 Docker hub의 이미지 다운로드 수는 80억회에 이릅니다. 누구나 쉽게 이미지를 만들고 배포할 수 있습니다.