Docker(3)
-
Docker Compose
Docker Compose 는 여러 컨테이너로 구성된 애플리케이션을 손쉽게 정의하고 실행할 수 있도록 도와주는 도구이다. 단일 명령어로 여러 컨테이너를 시작 ,중지, 관리할 수 있어 개발 및 운영 환경에서 매우 유용한 도구이다. Docker Compose?멀티 컨테이너 관리 도구 : 하나의 애플리케이션이 여러 개의 컨테이너(ex: Web Server, Database, Cache Sever 등)로 구성될 떄 이들을 한 번에 정의하고 실행할 수 있도록 한다.개발 및 테스트 환경: 복잡한 환경을 빠르게 구성하고 쉽게 재현할 수 있어 로컬 개발 환경이나 CI CD 파이프라인에 자주 사용된다.YAML 기반 설정: 애플리케이션 구성 요소(컨테이너)를 YAML 파일에 정의하여 각 서비스의 이미지, Port, Vol..
2025.03.25 -
Docker Architecture
Docker의 격리가 완전한가?Docker Container는 강력한 격리를 제공하지만 VM 만큼 완벽한 가상화 격리는 아니다. 1. 커널 공유Cotainer은 Host Kernel을 공유하기 때문에 Kernel 을 취약점을 통해 Container Escape 이 발생할 가능성이 있다.해결방안: gVisor, Kata Containers 같은 가상화 기반의 샌드박스 컨테이너 사용2. Default 설정이 완전한 격리를 제공하지 않는다.기본적으로 Docker는 User Namespace가 활성화되지 않았다. (컨테이너 내 사용자/그룹 ID를 격리하여 Host 와 다른 권한 수준을 가지도록하는 격리 방법)그래서 컨테이너 내부의 root 사용자는 Host 에서 root 로 동작할 수도 있다.해결방안: --us..
2025.03.19 -
컨테이너 가상화
위와 같은 특성들로VM은 격리성과 보안이 중요한 환경에 적합하고컨테이너는 빠른 배포, 높은 확장성, 리소스 효율성이 중요한 환경에서 유리하다 컨테이너 가상화에 필요한 대표적인 리눅스 기반 기술 두 가지- 네임스페이스(Namespaces)- cgroups(Control Groups) 1. 네임스페이스 (Namespaces)컨테이너를 서로 독립된 환경에서 실행할 수 있도록 리눅스 커널에서 제공하는 격리 기술이다.리눅스에서 실행되는 모든 프로세스는 기본적으로 커널의 자원(파일 시스템, 프로세스 ID, 네트워크 등)을 공유하지만 Namespaces를 사용하면 특정 리소스를 다른 프로세스와 격리할 수 있다.Namespaces 사용 예시1) PID Namespace 를 사용한 프로세스 격리unshare --pid ..
2025.03.18