어느정도 서버를 다루고 서비스들을 배포하려 하면 반드시 알아야 하는 도커! 오늘은 이 "도커"에 대해 알아보겠습니다.
도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술을 사용해 컨테이너로 실행하고 관리하는 컨테이너 기반 오픈소스 가상화 플랫폼입니다.
도커는 2013년 3월 산타클라라에서 열린 파이콘 컨퍼런스에서 처음 발표되었습니다. dotCloud의 창업자인 Solomon Hykes에 의해서요. 이후 도커가 인기를 얻으면서 아예 회사이름을 Docker Inc.로 바꾸고 2014년 도커 1.0을 발표합니다.
Q. 그런데 도커에서 말하는 '컨테이너'는 뭔가요?
어려워 보이지만 우리가 흔히 생각하는 화물 수송용 박스와 비슷하다고 생각하시면 됩니다. 서버에서 이야기하는 컨테이너도 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 만듭니다. 데이터베이스, 웹서버 등 어떤 프로그램도 추상화 할 수 있으며 조립 PC, AWS 등 어디에서든지 실행할 수 있습니다.
< 도커 관련 용어 정리 >
용어 | 뚯 |
컨테이너 | 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술 |
컨테이너 런타임 | 컨테이너를 다루는 도구 |
도커 | 컨테이너를 다루는 도구 중 가장 유명한 것 |
쿠버네티스 | 컨테이너 런타임을 통해 컨테이너를 오케스트레이션하는 도구 여러 서버에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경설정을 관리하고 주입해주는 일(오케스트레이션)을 함 |
오케스트레이션 | 여러 서버에 걸친 컨테이너 및 사용하는 설정을 관리하는 행위 |
* 참고
쿠버네티스, 컨테이너, 도커에 대한 기본 개념 - 삼성 SDS
서버를 운영하다보면 더 좋은 서버로 옮기거나 여러 서버를 추가해야 할 경우가 생깁니다. 이때 새로 생긴 서버에도 언어, 웹 서버, 데이터베이스 등등 서버를 구축하기 위한 환경을 전부 세팅해주어야 합니다. 그나마 같은 사람이 하는 거면 번거롭고 끝날 일이지만... 만약 퇴직하고 없는 개발자가 구축해놓은 구식 환경이라면?
도커를 사용하는 이유는 바로 여기에 있습니다. 이처럼 서버를 여러개 돌려야 하는 상황이 생겼을 때 발생하는 문제들을 깔끔히 해결해줍니다.
먼저 각 제품들이 설치된 모습을 '이미지'로 박제해서 도커 허브DokerHub에 저장합니다. 여기서 이미지란 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로, 상태 값을 가지지 않고 변하지 않습니다. 사용자가 지정할 수도 있고, 제품에서 공식적으로 제공하는 이미지도 있습니다.
이렇게 이미지로 저장된 항목들이 함께 연결돼서 동작하도록 설정된 상태를 명령어 텍스트나 문서 형태로 저장할 수도 있습니다. 그러니 이 문서만 도커허브에 잘 보관해두면 해당 요소들을 미리 지정된 설정대로 다운 받아서 설치할 수 있습니다.
도커는 이것들을 바로 서버에 설치하지 않습니다. '컨테이너'라고 하는 독립된 가상 공간을 만들어서 복원합니다. 따라서 다른 버전의 자바를 사용하는 경우에도 각각의 컨테이너에서 동작하기 때문에 충돌없이 이용할 수 있습니다.
도커는 OS단까지 내려가지 않고, 실행 환경만 각각 돌리기 때문에 컴퓨터에 직접 해당 요소들을 설치한 것과 별 차이없이 성능을 낼 수 있습니다. 따라서 수정사항이 있을 때, 하나하나 삭제하고 재설치 하는 과정을 거치는 게 아니라 컨테이너를 통째로 바꾸면 됩니다.
Q. 와 도커덕에 정말 편리해진 것 같아요. 도커를 사용할 때 주의해야 할 점은 없나요?
있습니다. 도커는 컨테이너가 OS를 공유하는 방식이기 때문에, 어떤 프로그램의 문제가 다른 프로그램을 간섭할 수는 없습니다. 하지만 내 프로그램이 OS 문제를 발생시킬 경우 해당 OS에서 구동중인 전체 컨테이너의 문제가 될 가능성이 있습니다. 이 점에 신경써야 합니다.
* 참고
얄팍한 코딩사전 "도커가 뭐고 왜 쓰는 건가요?"
쿠버네티스, 컨테이너, 도커에 대한 기본 개념 - 삼성 SDS
도커에 대해 어느정도 감이 잡히니 직접 사용해보고 싶어집니다. 이런 분들을 위해 도커를 직접 학습할 수 있는 방법을 몇가지 소개해드리겠습니다.
먼저 사이트입니다.
△ 누르면 이동합니다
해당 사이트를 살펴보면 초보를 위해 도커의 A to Z까지 설명돼있는 것을 볼 수 있습니다. 자세한 내용은 click을 누르면 나타나는 <초보자를 위한 도커 안내서>를 참고하시기 바랍니다.
다음은 책입니다. 각종 서점 사이트에 "도커"를 검색하면 여러가지 책이 나옵니다. 책으로 공부하는 방법은 본인 스타일에 맞는 책을 사는 것에서 시작합니다. 도커의 개념부터 시작하는 기본서, 무작정 따라하는 실전서 등등 다양한 흐름의 책을 보시고 가장 나와 맞는 책을 골라 그 책대로 학습하는 방법을 추천합니다. 책을 찾다 보면 도커와 쿠버네티스를 함께 다루는 적지 않다는 걸 알 수 있습니다. '도커만 다루는 책을 사야하나?' 헷갈릴 수 있지만 두 가지가 밀접한 개념이기 때문에 도커/쿠버네티스 책을 구매하시는 것도 무방하다고 합니다.
* 참고
쿠버네티스, 컨테이너, 도커에 대한 기본 개념 - 삼성 SDS
마지막으로 유튜브 영상입니다.
Doker Tutorial for Beginners
우리를 위한 영상이네요
한 번 시작해봅시다
지금까지 도커에 대해 알아보았습니다. 도커에 대해 조금 감이 잡히셨길 바라며... 이상으로 글을 마무리하겠습니다.
감사합니다 :)
[1월] :: 면접 질문 파헤치기 :: 객체지향 5원칙 "SOLID" 를 알아보자 (0) | 2023.01.13 |
---|---|
[12월] 비전공자의 넓고 얕은 SSAFY이야기 String ver4 = "수학" (0) | 2022.12.31 |
[11월] 싸피 비전공자 합격 팁 한 번에 보기! "8기 합격자가 말해주는 꿀팁모음.zip" (0) | 2022.11.30 |
[11월] 프론트엔드 맛보기 :: " Vue.js " 탐구생활 (1) | 2022.11.01 |
[10월] 비전공자의 넓고 얕은 SSAFY이야기 String ver3 = "수학" (0) | 2022.10.23 |