Docker의 구조에 대해 간단하게 소개를 하고 넘어가고자 포스트를 준비했다.
개인적으로 무언가를 배우려고 할 때 흔히 말하는 ‘겉핥기’를 잘 못한다.
겉핥기도 기술인 것 같다.
뭔가 알고자 읽으면 모르는 단어들이 나오거나 원리가 궁금한 부분이 생기는데 이 부분이 해결이 안되면 그걸 핑계 삼아서라도 더 이해가 안된다고 머리가 공부를 안한다.
나같은 사람이 있을 것 같아 사이트 소개 페이지에도 언급했듯이 기초부터 다 다루는게 ThinkGround이다:)
위 그림은 Docker의 기본 구조를 도식화 한 것이다.
Docker는 기본적으로 ‘Client-Server 구조’를 갖고 있다고 얘기한다.
사실 책에서도 이렇게만 표현해주고 그냥 넘어가는 부분이라 ‘그렇구나’ 하고 넘어가기 일쑤이지만, 내 개인적인 생각일 수 있지만 아키텍처가 어떻게 되어있는지를 확실히 알아야 나중에 고생을 안한다.
Docker의 Architecture 에서 Docker의 Client는 우리가 흔히 접하는 CLI 부분을 이야기한다.
Docker Server에게 명령을 하기 위한 인터페이스라고 생각하면 되겠다.
Docker Client와 Server의 통신에는 REST API가 사용된다.
REST API에 대한 설명은 나중에 다른 포스트에서 해볼 수 있도록 하겠다.
이미 다른 전문가분들께서 포스팅을 많이 해두셨으니 봐두면 될 것 같다.
Docker Server는 Docker의 Daemon(데몬)이 있는 영역이다.
dockerd라고 부르는 곳으로, 사실상 모든 기능의 수행은 여기서 이루어 진다고 보면 된다.
평소에는 계속 Running 상태를 유지하면서 Client의 명령을 기다리고 있으며, 도커에서 수행되는 모든 프로세스를 관리한다.
Docker CLI에서 ‘docker version’이라고 명령을 해보았다.(사실 지난번 포스트에 쓰려고 캡처해뒀다가 오늘 쓴다..)
output을 보니 Client와 Server가 구분되어 표현이 되어있다.
서버와 클라이언트는 버전을 각각 관리를 하고 있다는 것을 알 수 있으며, 나의 경우에는 for Windows라서 그런지 Client측에 OS/Arch에 windows라고 되어있다. (뭔가 마상..)
추가적으로 Docker의 Architecture 가 궁금한 점이 있다면 Docker Engine 하단에 나온 API, Go의 Version Release Note 등을 살펴보면 도움이 될 수도 있다. 나도 아직 거기까진 안봤다.