본문 바로가기

방법론과 DevOps/Docker

(11)
도커와 방법론 도커와 방법론 지금까지 도커 관련 포스트에서 알 수 있든 도커는 컨테이너 방식으로 서버를 가상화 합니다. 기존 레거시 방식의 프로젝트에서는 VM과 같은 하이퍼 바이저 방식만을 사용한 가상화 서버에 서비스를 배포하는 형태의 프로젝트 들이 많았지만, 도커가 최근 개발 진영에서 핫한 이유는, 애플리케이션의 기능의 세분화/경량화를 점점 추구하는 형태로 진화했기 때문입니다. 세분화/경량화를 중요성이 장조되는 현대 개발에서 가장 추구하는 서버 구성은 클라우드 네이티브 방식입니다. 전통적인 IDC 방식만을 고집하는 것이 아니라 리소스를 필요에 따라 유연하게 구성하는 클라우드 방식을 적용이 점점 더 각광받기 시작했고, https://dkkim2318.tistory.com/102 클라우드 컴퓨팅클라우드 컴퓨팅? ..
도커 가상 네트워크 가상 네트워크 네트워크란 서로 연결된 데이터나 자원을 주고 받는 통신망입니다. 가장 대표적인 네트워크는 인터넷 입니다. 같은 인터넷망에 접속한 사용자라면 누구나 서로 통신을 주고 받는 것이 가능합니다. 네트워크는 실제로 케이블로 연결된 하나의 물리적 망이지만 도커와 같이 서버를 가상화 하는 프로그램에서는 서버의 가상 네트워크라는 개념이 들어갑니다. 네트워크는 물리적 H/W 구성이 필요합니다. 간다하게만 생각해봐도 하나의 여러 통신망의 서버를 연결 하기 위해선 스위치, 라우터, NIC, NAT장비 등등 여러가지 물리적 구성이 필요합니다. 하지만 도커는 한대의 물리적 서버의 여러개의 논리적 서버처럼 구성한 가상화 솔루션 입니다.https://dkkim2318.tistory.com/139 Docker ..
멀티 스테이지 빌드 멀티 스테이지 빌드 멀티 스테이지 빌드(Multi-statge build) 란 도커 파일 내 여러 개의 빌드 단계를 정의하여 이미지를 생성하는 방법입니다. 모두다 알다시피 빌드라는 행위는 애플리케이션이 동작하기 위해 필요한 요소들을 구성합니다( 라이브러리, 런타임, 툴 등등...). 이미지를 빌드 할 때는 이 구성요소들을 구성할 단계를 코드로 정의해야 하죠. 하지만 이 모든 단계가 애플리케이션을 실행하기 위해 최소한으로 필요한 것은 아닙니다. 빌드라는 행위는 결국 이미지를 만드는데는 필요하지만, 최종 컨테이너 이미지에는 필요 하지 않은 부분이 존재합니다. 예를 들어 스프링 프로젝트를 .jar 파일로 빌드한다고 생각해 봤을 때 maven 또는 gradle 같은 빌드 도구와 자바 컴파일러를 통해 빌..
도커파일 지시어 도커파일 도커파일은 이전 이미지 빌드 관련 포스트에서 언급 했듯이, 이미지를 빌드하시 위한 용도로 작성된 파일을 의미합니다. https://dkkim2318.tistory.com/146 이미지 빌드이미지를 만드는 방법 이미지를 만드는 방법은 현재 실행 중인 컨테이너 그 상태 그대로 이미지로 만들어 내는 이미지 커밋 방식과 도커 파일을 통해 이미지를 저장하는 이미지 빌드 두가지 방dkkim2318.tistory.com생성할 이미지에 대한 정보를 기술해 둔 특성을 지니고 있기 때문에 도커 템플릿으로 불리기도 합니다. 도커파일 의 지시어 도커파일은 명령어가 순차적으로 나열 된 형태로 작성 합니다. 주요 명령어에 대해 살펴보면 아래와 같습니다.FROM : 베이스 이미지를 지정 - 일반적으로 이미지를 생성할..
이미지 빌드 이미지를 만드는 방법 이미지를 만드는 방법은 현재 실행 중인 컨테이너 그 상태 그대로 이미지로 만들어 내는 이미지 커밋 방식과 도커 파일을 통해 이미지를 저장하는 이미지 빌드 두가지 방법이 있습니다. 정확히 말하자면 이미지 빌드도 이미지 커밋 방식을 포함한다고 볼 수 있지만, 실행중인 상태를 저장하느냐 아니냐에 따라 두가지고 분류 된다고 보면 됩니다이미지 커밋 : 현재 컨테이너 상태를 이미지로 저장이미지 빌드 : Dockerfile을 통해 이미지를 저장 이미지 커밋이미지 커밋은 현재 컨테이너 상태를 이미지로 저장합니다. 보통 이미지 커밋을 사용하는 경우는 이미지로 띄운 컨테이너 동작 확인 중 수정사항이 발생하였을 경우 사용 되게 됩니다. 이미지 커밋의 과정은 아래와 같습니다.이미지를 컨테이터로 실..
이미지와 레이어 레이어드 구조레이어드 구조는 층을 가진 구조를 의미 합니다. 레이어란 여러개의 층으로 이루어진 구조 중 하나의 층을 의미하는 단어이며 도커의 이미지는 이러한 레이어 들의 집합으로 구성 되어 있습니다. (즉 도커 이미지는 레어어드 구조) 일반적으로 docker hub 와 같은 이미지 레지스트리에서 docker 이미지를 다운로드 받을 경우 하나의 파일을 다운 받은 것처럼 보이지만 실제로는 여러 레이어들을 다운받아 모여 하나의 이미지로 구성 되어 있는 것으로 볼 수 있습니다. 레이어드 구조를 사용하는 이유 레이어드 구조는 여러 층을 가진 구조 입니다. 왜 도커에서는 이러한 구조를 사용하여 이미지를 구성하는지 이해하기 위해선 이미지의 불변성에 대한 이해가 있어야 합니다. 도커의 이미지는 일종의 압축파일..
이미지 레지스트리 이미지 레지스트리 이미지 레지스트리는 도커에서 생성한 이미지를 저장하는 저장소 입니다. 개발자라면 깃허브나 메이븐 레파지토리 와 같은 사이트를 사용해 본 적이 있을 것입니다. 깃허브나 메이븐 레파지토리와 같은 공간을 통해 우리는 소스 코드를 공유할 수 있고 필요한 기능들을 쉽게 주고 받을 수 있습니다. 도커 컨터에너 이미지 또한 이와 같이 저장소를 통해 서로 이미지를 공규마고, 관리 할 수 있습니다. 이번 포스트에서는 이미지 레지스트리에 대해 다루어 보겠습니다. 이미지 레지스트리의 기능이미지 레지스트리는 위와 같은 기능을 제공합니다.이미지 공유 : 도커 컨테이너 이미지 업로드/다운로드 기능 제공이미지 검색 : 이미지 검색 기능 제공이미지 버전 관리 : 버전 관리를 통해 특정 버전의 이미지를 ..
이미지 서버와 소프트웨어 서버에서 소프트웨어(프로그램) 을 실행하기 위해선 세가지 요소가 필요합니다. 먼저 OS, 프로그램을 실행하기 위해 필요한 구성요소(언어, 소스, 라이브러리, 설정 파일 등등 ...) 그리고 프로그램을 실행할 실행파일 이 세가지 요소를 가지고 있어야 서버에서 프로그램을 동작하는 것이 가능합니다. 결국 프로그램을 배포한다는 의미는 개발자가 프로그램을 개발해 이를 운영환경에서 동작시키기 위해 물리적 서버에 OS를 설치해야 하며 프로그램에 필요한 구성요소들을 서버에 세팅하고, 실행파일을 통해 실행시키는 과정을 동반합니다. 이미지이미지란 앞서 서버에 소프트웨어를 배포하기 위해 필요한 3가지 요소를 패키징한 것을 의미합니다. 이전 포스트에서 우리는 nginx 웹서버를 docker 명..