VM ( Virtual Machine ) 구조 VM은 하이퍼바이저를 사용하여 하드웨어를 가상화 하이퍼바이저는 가상화를 가능하게 하는 소프트웨어 이는 물리적 하드웨어와 가상 머신(VM) 사이에서 작동하며, 여러 개의 VM이 동일한 물리적 하드웨어 위에서 독립적으로 실행될 수 있도록 함. 각 VM은 완전한 운영 체제를 포함하며, 하이퍼바이저는 이러한 VM들이 하드웨어 자원을 효율적으로 공유하고 관리할 수 있도록 도움. Type 1 (네이티브 하이퍼바이저): 이는 직접 하드웨어 위에 설치되며, 운영 체제 없이 독립적으로 작동함. ex. VMware ESXi, Microsoft Hyper-V, Xen Type 2 (호스티드 하이퍼바이저): 이는 기존 운영 체제 위에 설치되며, 일반적인 애플리케이션처럼 작동함..
1. 도커 이미지 도커 이미지는 프로그램을 실행하는데 필요한 설정과 소프트웨어 종속성(프로그래밍 언어 런타임 및 기타 소프트웨어 라이브러리의 특정 버전 등)을 가지고 있다. 여러개의 레이어로 되어있다. 도커 이미지는 여러개의 레이어가 쌓여서 만들어진다. 베이스 이미지는 이미지의 기반이 되는 부분이다. 이미지에 무언가가 추가 되면(변경 사항이 생기게 되면) 레이어가 추가되게 되는데, 이를 레이어 캐싱이라고 한다. 2. 도커 이미지 만들기 도커 이미지는 도커 파일을 사용하거나 커밋을 사용하면 만들 수 있다. 🔽 예제 container name: python-os image name: centos:7 python package install 후 /app dir에 마운트 working dir, volume 모두..
뉴스를 돌아다니다가 Redis가 나와서 머리를 싸맸다. '분명 어디선가 들어본 적 있는 것 같은데...'하고 고민하다가 깨달았다. 가장 최근으로는 두 달 쯤 전에 2021년 4월 DBMS 인기 순위라는 글을 작성하면서도 봤고, 학부 데이터베이스 강의를 들을 때 인메모리 데이터베이스로 몇 번 언급 됐다. Redis(레디스)는 Remote Dictionary Server의 약자로, "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 4월에도 Key-Value Database 중에서 1위였는데, 이번 달도 마찬가지로 1위다. 레디스를 언제 사용하면 좋은지는 이 브런치 글에 잘 정리되어 있다. 레디스(Redis)는 언제 어떻게 사용하는 게..
도커 컨테이너 생명주기 (1) docker stop vs docker kill [docker stop → SIGTERM → SIGKILL → main process] docker stop은 sigterm을 사용해서 리소스 해제, 상태 저장 등 시스템 종료를 위해 프로세스가 정리하는 시간을 준 후 sigkill 을 사용해서 컨테이너를 멈춘다. [docker kill → SIGKILL → main process] docker kill은 sigterm을 사용하지 않고 즉각 컨테이너를 멈춘다. * signal(신호) 일반적으로 Unix, Unix 계열 및 기타 POSIX 호환 운영 체제에서 사용되는 제한된 형태의 프로세스 간 통신 (IPC)이다. 이벤트를 알리기 위해 프로세스 또는 동일한 프로세스 내의 특정 스..
도커는 운영체제 수준 가상 소프트웨어를 활용하여 사용자가 모든 라이브러리 종속성이있는 도커 컨테이너에서 애플리케이션을 개발, 배포, 관리 및 실행할 수 있도록 지원하는 플랫폼이다. 도커 컨테이너는 애플리케이션을 실행하는 데 필요한 모든 종속성 (프레임 워크, 라이브러리 등)을 포함하는 독립 실행형 패키지다. 결국 프로세스를 분리해 독립적으로 실행될 수 있도록 하는 독립성이 도커의 본래 목적이다. 도커에서 네트워크는 도커 컨테이너에게 완전한 격리를 제공하기위해 사용된다. 도커 네트워킹의 장점은 아래와 같다. 1. They share a single operating system and maintain containers in an isolated environment. - 단일 운영 체제를 공유하고 격리된..
0. 데이터 관리 도커 튜토리얼(링크)에서는 간단한 ToDo 애플리케이션*의 빌드, 업데이트, 공유를 직접 해보며 도커의 컨셉을 이해한다. 튜토리얼 Part 2-4를 수행하면서 작성한 ToDo 애플리케이션을 실행할 때마다 초기화된다. 튜토리얼 Part 5인 Persisting the DB(링크)에서는 데이터를 영구적으로 저장하는 두 가지 방법(Bind Mount, Volume)을 소개한다. 이미지는 여러 개의 레이어로 이루어져 있다. 기본적으로 이미지로 컨테이너를 실행해 파일을 생성하거나 삭제하면 새로운 레이어를 만들어 내용을 저장한다. 이 내용은 컨테이너와 함께 삭제된다(⭐컨테이너의 휘발성). 컨테이너가 삭제된다고 내부의 중요한 데이터까지 삭제되면 안 되므로 사용하는 두 가지의 대표적인 방법이 Bind..
도커 사용하기 Usage: docker [OPTIONS] COMMAND 도커는 서버를 코드 형태로 정의해서 이미지를 만들고, 이미지를 사용해서 컨테이너를 실행한다. 따라서 일관성 유지와 버전 관리가 편하다. (1) 도커 이미지 🐋 도커 이미지 여러개의 레이어로 구성됨 각 레이어는 Read Only 이미지로 컨테이너를 실행해서 파일을 생성하고 삭제할 때 새로운 레이어를 만들어 내용 저장 → 컨테이너와 함께 삭제되는 런타임 데이터임 → 영구적으로 저장하려면 볼륨(Bind Mount, Volume)을 사용해야 함 디스크에 저장된 상태 프로그램을 실행하는데 필요한 설정과 소프트웨어 종속성(프로그래밍 언어 런타임 및 기타 소프트웨어 라이브러리의 특정 버전 등)을 가지고 있다. 🐋 관련 명령어 (2) 도커 컨테이너..
도커는 대표적인 컨테이너 기술이다. 나는 회사에서 모 프로젝트를 진행하면서, 온갖 가상머신에 각종 프로그램을 실행하기 위한 설정을 하고 라이브러리를 설치하면서 컨테이너 기술에 관심을 가지게 됐다. 컨테이너 GCP에서 컨테이너의 개념과 이점을 잘 설명한 글(cloud.google.com/containers/?hl=ko)이 있다. 일부를 발췌하면 아래와 같다. 컨테이너와 VM의 공통점 가상 머신(VM)은 호스트 운영체제에서 구동되며 그 바탕이 되는 하드웨어에 가상으로 액세스하는 Linux, Windows등의 게스트 운영체제를 의미한다. 컨테이너는 가상 머신과 마찬가지로 애플리케이션을 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련해준다. 컨테이너와 VM의 ..