DevOps/Docker

DevOps/Docker

[Docker] 컨테이너 모니터링

컨테이너된 환경에서 애플리케이션 모니터링 : 프로메테우스(Prometheus) 전통적인 애플리케이션 모니터링 일반적으로 고정된 서버에서 애플리케이션을 실행하고 관리하므로, 서버의 상태를 추적하고 문제가 발생했을 때 알림을 받는 방식으로 작동한다. 보통 서버의 CPU 사용량, 메모리 사용량, 디스크 공간 등의 기본적인 지표를 추적한다. 컨테이너화된 애플리케이션 환경에서는 적합하지 않다. 컨테이너는 빠르게 생성되고 삭제되며, 많은 컨테이너가 동시에 실행될 수 있다. 컨테이너화된 애플리케이션 환경에서는 각 컨테이너의 상태를 개별적으로 추적하고, 컨테이너 간의 관계와 상호작용을 이해할 수 있는 모니터링 도구가 필요하다. 또한, 컨테이너가 생성되고 삭제되는 빠른 주기를 반영할 수 있는 동적인 모니터링 방식이 필요..

DevOps/Docker

[Docker] 헬스 체크와 디펜던시 체크

책 "도커 교과서"의 "8장 헬스 체크와 디펜던시 체크로 애플리케이션의 신뢰성 확보하기"를 기반으로 정리한 포스트 입니다. 핵심 주제 운영 환경에서는 컨테이너 플랫폼인 도커 스웜, 쿠버네티스 등을 사용하여 애플리케이션을 실행한다. 이런 플랫폼은 애플리케이션의 상태를 자동으로 모니터링하고 문제가 발생하면 복구하는 기능을 제공한다. 애플리케이션의 상태 체크 정보는 컨테이너 이미지에 포함되어 플랫폼이 이를 활용하여 컨테이너의 상태를 파악한다. 만약 애플리케이션이 정상적으로 작동하지 않는 것으로 판단되면, 플랫폼은 해당 컨테이너를 제거하고 새로운 컨테이너를 배포하게 된다. 도커의 기본 상태 점검 : 특정 프로세스의 실행 상태를 체크 도커는 컨테이너를 실행할 때 애플리케이션의 기본 상태를 점검한다. 프로세스가 종..

DevOps/Docker

[Docker] 도커 컴포즈와 분산 애플리케이션

핵심 정리 도커 컴포즈(Docker Compose)를 이용해 여러 개의 도커 컨테이너로 구성된 분산 애플리케이션을 어떻게 실행하는지에 대해 다룬다. 도커 컴포즈는 여러 개의 컨테이너로 구성된 애플리케이션을 정의하고 관리하기 위한 도구이다. 각 컨테이너가 어떤 이미지를 기반으로 생성될 것인지, 컨테이너 간의 네트워크 구성은 어떻게 될 것인지, 볼륨은 어떻게 사용될 것인지 등을 설정 파일에 명시적으로 정의하고 이를 바탕으로 애플리케이션을 실행할 수 있게 해준다. 이번 포스트에서는 도커 컴포즈의 기본 개념을 이해하고, 간단한 애플리케이션을 도커 컴포즈를 통해 배포한다. 그 과정에서 컴포즈 파일의 주요 구성 요소와 구문을 익히고, 네트워킹과 볼륨을 사용하여 컨테이너 간의 상호작용을 구성하는 방법에 대해 다룬다...

DevOps/Docker

[Docker] 도커 볼륨과 마운트

무상태(stateless)와 유상태(stateful) 무상태 애플리케이션 과거의 요청이나 사용자의 상호작용을 기억하지 않는다. 각 요청은 독립적이며, 요청 사이에 지속성이 없다. 사용량이 증가함에 따라 쉽게 확장할 수 있으며, 신뢰성 있는 처리를 제공한다. 롤링 업데이트(서비스를 중단하지 않고 애플리케이션을 업데이트하는 방식)을 가능하게 한다. 유상태 애플리케이션 이전 요청이나 사용자 상호작용의 정보를 유지한다. ex. 데이터베이스, 파일 시스템 도커 컨테이너는 기본적으로 무상태이다. 그러나 때때로 애플리케이션의 데이터를 저장하거나 캐시를 위해 디스크 공간이 필요할 수 있다. 이때 도커의 볼륨(volume)과 마운트(mount) 기능을 사용하면 컨테이너 내부에 생성된 데이터를 컨테이너 외부에 저장하고 유..

DevOps/Docker

[Docker] 도커 레지스트리와 도커 허브: 이미지 공유와 관리

핵심 내용 이전 포스트에서 다룬 내용들은 dockerfile을 통해 이미지를 build하고, 해당 이미지를 바탕으로 container를 실행하는 방법에 관한 것이었다. 이번 포스트는 dockerfile을 통해 생성된 이미지를 도커 레지스트리에 공개(ship)하는 방법에 대해 다루고자 한다. 도커 레지스트리와 도커 허브 ❔ 도커 레지스트리 더보기 도커 이미지를 저장하고 공유하기 위한 저장소이다. 버전 관리, 접근 제어, 이미지 검색, 배포 등의 기능을 제공하며, 도커 이미지의 생명주기 관리를 위한 핵심 요소이다. Docker Hub는 가장 널리 사용되는 공개 레지스트리이지만, 보안 이슈나 특정 환경에서의 요구사항 때문에 private registry를 사용하기도 한다. ❔ 도커 허브 더보기 도커 레지스트리..

DevOps/Docker

[Docker] 멀티 스테이지와 애플리케이션 빌드

도커는 빌드 툴체인을 한 번에 패키징해서 공유할 수 있다. 개발에 필요한 모든 도구를 배포하는 Dockerfile 스크립트를 작성한 다음 이를 이미지로 만든다. 그리고 애플리케이션 패키징을 위한 Dockerfile 스크립트에서 이 이미지를 사용해 소스 코드를 컴파일함으로써 애플리케이션을 패키징하는 것이다. Docker를 사용하면 빌드 툴체인을 패키징하고 공유하는 것이 가능하다. 빌드 툴체인은 소스 코드를 실행 가능한 애플리케이션으로 변환하는 데 필요한 모든 도구와 프로세스를 말한다. (ex. 컴파일러, 빌드 자동화 도구, 의존성 관리 도구 등) 빌드에 필요한 모든 도구를 포함하는 Dockerfile(ex. 특정 OS, 필요한 시스템 라이브러리, 빌드 도구, 소스 코드 등을 포함)을 작성하여 이미지를 빌드..

DevOps/Docker

[Docker] Docker image와 image layer

3장 실습은 web-ping이라는 간단한 애플리케이션으로 진행된다. 지정한 웹 사이트가 노출되는지 확인하는 기능을 하며, 컨테이너에서 실행돼 지정된 URL에 HTTP 요청을 3초마다 보내는 동작을 컨테이너가 종료될 때까지 반복한다. 도커 파일 vs 도커 이미지 vs 도커 컨테이너 먼저 도커 파일, 도커 이미지와 도커 컨테이너의 차이를 대략적으로 이해해보자. 도커 파일 == 서버 운영 기록 도커 이미지 == 도커 파일 + 실행 시점 도커 컨테이너 == 도커 이미지 + 환경 변수 아래 링크를 참고하였으므로, 더 자세한 내용이 궁금하다면 아래 내용을 참고바란다. 왜 굳이 도커(컨테이너)를 써야 하나요? - 컨테이너를 사용해야 하는 이유컨테이너는 서버 애플리케이션을 배포하고 서버를 운영하는 표준적인 기술이 되어..

JOYERIM
'DevOps/Docker' 카테고리의 글 목록