컨테이너 3

Docker 란 무엇인가?

1. Docker는 왜 나왔을까? 리눅스의 기반 기술만으로도 컨테이너를 만들 수 있다(namespace, chroot 등등만 써서) 그러나 리눅스 기반기술만을 사용해서 컨테이너를 만들면 재사용도 어렵고 공유가 어렵다. 그래서 등장한 게 Docker다. Docker 아이콘을 보면 화물선과 같이 생겼다. 아이콘 처럼 규격에 맞게 컨테이너들을 나르는 화물선같은 역할을 해준다. Spring Boot 어플리케이션이든 MariaDB이든 Docker 엔진위에 컨테이너 형태로 동일한 규격에 맞추어 실행된다. 이렇게 규격을 맞춘 어플리케이션들은 Docker 엔진 위라면 어느 곳에 옮겨져도 문제가 없다. (규격에 맞는 컨테이너가 어느 화물선이든 실리듯이..) 2. Docker 아키텍처 Docker의 아키텍처를 보면 크게 ..

Kubernetes 2023.07.21

컨테이너를 이해하기 위한 리눅스 기반 기술

컨테이너는 애플리케이션을 격리된 환경에서 실행하는 가상화 기술입니다. 이를 위해 리눅스 기반 기술을 사옹하는데 어떤 기술을 사용하는지 알아봅시다. 1. namespace namespace는 프로세스가 격리된 환경에서 실행되게 해줍니다. 예를 들어, PID 네임스페이스는 프로세스 식별자를 격리하여 각 컨테이너가 독립된 프로세스 트리를 가질 수 있게 합니다. 2. cgroupcgroup(Linux Control Group)은 프로세스의 자원 사용량을 제한합니다. 각 컨테이너는 cgroups를 사용하여 CPU, 메모리, 디스크 I/O 등의 리소스를 할당받고 제한할 수 있습니다. 3. chrootchroot(Change Root)는 프로세스가 실행될 루트 디렉토리를 변경하는 명령어입니다. 이걸 이용해 특정 디렉..

Kubernetes 2023.07.19

Container와 Container Runtime

이 글에서는 Kubernetes를 배우면 가장 먼저 언급되는 컨테이너, 가상서버, Docker에 관해서 이야기 합니다. 컨테이너는 왜 등장했을까? 컨테이너는 어플리케이션을 실행하는데 필요한 설정, 소프트웨어들을 합쳐놓은 것이다. 따라서 어떤 환경에서든 구동시킬 수 있고, 여러 개의 컨테이너도 돌리 수 있다. 컨테이너와 가상 서버의 차이점은? 둘 다 한 대의 머신을 여러 사용자에게 쪼개면서도 사용자는 마치 한 대의 전용 서버를 쓰는 것 같이 이용할 수 있게 해준다. 차이점은 어떻게 분리된 느낌을 주게 하는 냐이다. 가상 서버는 가상화 소프트웨어 즉, 하이퍼바이저(Hypervisor)를 사용해 하드웨어를 공유한다. 컨테이너는 하나의 리눅스 프로세스가 마치 전용 서버에서 동작하고 있는 것 같은 분리상태를 만들..

Kubernetes 2023.07.17