• toc {:toc}

Alpine Linux

리눅스는 오픈소스 OS로 많은 사용자, 커뮤니티에 의해 각 분야, 사용자에 맞추어 변형되었고, Alpine은 그 중 하나의 OS이다. Alpine은 ‘Small’, ‘Simple’, ‘Secure’에 목적을 두고 만들어졌고, 개발이 이루어지면서 커널을 제외한 용량이 8MB 밖에 되지 않는 아주 가벼운 OS가 되었다.

glibc VS musl

많이 사용되는 Ubuntu, Debian, Centos는 glibc를 사용하는 반면 Alpine은 musl과 BusyBox 사용한다.

glibc는 GNU 프로젝트에서 C 표준 라이브러리로 구현한 라이브러리이다. GNU프로젝트는 ‘GNU’s Not Unix’의 약자로, 독점 소프트웨어인 유닉스와 비슷한 기능을 갖지만 유닉스는 아닌 오픈소스 소프트웨어를 만들자는 목적으로 시작됐다.

musl 또한 리눅스 커널 기반의 운영체제 용으로 고안된 C 표준 라이브러리이다. musl은 깨끗하고 효율적이며, 표준을 준수하는 libc를 개발하는 것을 목표로 개발되었다.

musl은 가볍고 빠른 수행 능력을 목적으로 구현되었기 때문에 일반적으로 msul이 glibc보다 더 가볍고 빠르고, 메모리와 CPU 자원 사용에 강점을 갖는다. 때문에 자원에 대한 제한이 있는 분야에서 많이 사용되고 유리할 수 있다.

BusyBox는 하나의 실행 파일 안에 유닉스 도구의 일부를 제공하는 소프트웨어이다. 아주 적은 용량에 필수 유닉스 기능이 들어가 있기 때문에 임베디드 환경에서 많이 사용된다고 한다.

이렇게 Alpine은 musl, BusyBox를 사용해 작고, 간단한 OS의 특성을 갖는다.


Alpine Linux 사용분야

위와 같은 특성으로 인해 Alpine은 주로 컨테이너, 클라우드, 임베디드에서 주로 사용된다. 특히 Alpine은 Docker container에서 많이 사용된다.

Docker

Docker는 container 개념을 사용해 여러 컴퓨팅 환경에서 application을 다룰 수 있도록 해주는 소프트웨어이다.

Docker가 사용되기 전에는 VirtualBox, VMWare와 같은 가상화가 많이 사용되었다. 가상화는 가상 머신을 만들어 컴퓨터 하드웨어의 사용성을 늘리는 기법이다.

아래의 사진의 왼쪽이 docker, 오른쪽이 가상머신을 사용한 구조이다. image

Docker VS 가상머신

가상머신은 기본적으로 컴퓨터가 가지고 있는 Host OS위에 가상화를 위한 Hypervisor 엔진, 그 위에 Guest OS와 App이 독립적으로 움직이는 형태를 갖는다.

하지만 Docker의 경우 Host OS외의 다른 Guest OS를 갖지 않고 App 구동을 위한 파일만을 컨테이너 형태로 갖는다. 때문에 docker는 Host OS의 커널을 공유하고 App의 차원에서 격리되어 사용될 수 있다.

예를 들면 가상머신의 경우 Host OS가 Ubuntu Linux이고, 가상머신을 사용하는 경우 가상머신을 통해 윈도우 OS 전체를 설치해 그 위에서 App을 실행하는 구조이다. Docker의 경우에도 container에 OS가 설치되어 있다. 하지만 docker는 Host OS의 커널을 공유하고 Host OS와 다른 부분만 container에 설치한다.

  • 장단점
  1. 보안적 측면
    • 가상머신 - Host OS, 가상머신들 사이가 서로 독립적이기 때문에 해킹이 되어도 다른 가상머신에 영향을 주지 않는다.
    • Docker - Host OS를 공유하기 때문에 Host 권한이 해킹되면 다른 컨테이너, Host OS까지 위험할 수 있다.
  2. 성능적 측면
    • 가상머신 - 시스템 확장 시 자원 처리 낭비가 발생할 수 있다. 분산처리가 유연하지 않다.
    • Docker - 시스템 자원 사용이 효율적이다. 각각을 분리해 사용할 수 있다.

Alpine의 경우 커널을 제외하면 8KB 밖에 안되는 아주 작은 운영체제이므로 docker의 작동원리를 생각해보면 container안에서 Alpine은 아주 경량화되어있고, App에 필요한 파일만 올려 경량화할 수 있기 때문에 많이 사용된다는 것을 이해할 수 있다.

참고문헌