Alpine Linux 기반 컨테이너 실행 방법

DockerBeginner
지금 연습하기

소개

이 튜토리얼에서는 Alpine Linux 배포판을 기반으로 Docker 컨테이너를 실행하는 방법을 안내합니다. Alpine Linux 는 작은 용량과 보안 중심 설계로 인해 Docker 컨테이너에 인기 있는 선택입니다. 이 튜토리얼을 마치면 자신만의 Alpine Linux 기반 Docker 컨테이너를 만들고 사용자 지정하여 Docker 작업 흐름을 최적화할 수 있게 됩니다.

Alpine Linux 소개

Alpine Linux 는 경량, 오픈소스, 그리고 보안 중심의 Linux 배포판입니다. 작고 간결하며 효율적인 설계로 컨테이너 환경, 임베디드 시스템, 클라우드 기반 애플리케이션에 적합한 선택입니다.

Alpine Linux 의 주요 특징 중 하나는 더 일반적인 glibc 대신 musl C 라이브러리를 사용하는 것입니다. 이는 더 작은 용량과 더 빠른 시작 시간을 가져와 컨테이너에서 실행하기에 적합합니다. 또한 Alpine Linux 는 빠르고 효율적인 apk 패키지 관리자를 사용하여 경량성을 더욱 강화합니다.

Alpine Linux 의 또 다른 주목할 만한 측면은 보안에 대한 중점입니다. 이 배포판에는 PaX 및 grsecurity 커널 패치와 같은 다양한 보안 관련 기능이 포함되어 일반적인 보안 취약점으로부터 보호하는 데 도움이 됩니다.

Alpine Linux 사용을 보여주기 위해 이 배포판을 기반으로 간단한 컨테이너를 실행해 보겠습니다.

## Alpine Linux 이미지 가져오기
docker pull alpine:latest

## Alpine Linux 컨테이너 실행
docker run -it alpine:latest /bin/ash

위의 예제에서 Docker Hub 레지스트리에서 최신 Alpine Linux 이미지를 먼저 가져옵니다. 그런 다음 이 이미지를 기반으로 컨테이너를 실행하고 /bin/ash 쉘을 진입점으로 사용합니다.

컨테이너 내부에서 Alpine Linux 환경을 탐색하고 경량성을 관찰할 수 있습니다.

/ ## uname -a
Linux 8b3d9f8a3d95 5.10.104-linuxkit #1 SMP Fri Mar 25 18:02:00 UTC 2022 x86_64 Linux
/ ## apk add --no-cache htop
(1/5) Installing ncurses-terminfo-base (6.3_p20220423-r0)
(2/5) Installing ncurses-libs (6.3_p20220423-r0)
(3/5) Installing ncurses (6.3_p20220423-r0)
(4/5) Installing util-linux (2.38-r0)
(5/5) Installing htop (3.1.1-r0)
Executing busybox-1.35.0-r19.trigger
OK: 7 MiB in 16 packages
/ ## htop

이 예제에서는 Alpine Linux 의 기본 패키지 관리자인 apk 패키지 관리자를 사용하여 시스템 모니터링 도구 htop을 설치합니다. 설치 과정이 빠르고 효율적이며, 이는 배포판의 경량성을 보여줍니다.

Alpine Linux 컨테이너 실행

Alpine Linux 컨테이너 시작

Alpine Linux 컨테이너를 실행하려면 docker run 명령어를 사용할 수 있습니다. 다음은 예시입니다.

docker run -it alpine:latest /bin/ash

이 명령어에서 사용하는 옵션은 다음과 같습니다.

  • -i: 연결되지 않은 경우에도 STDIN 을 열어둡니다.
  • -t: 가상 터미널 (pseudo-TTY) 을 할당합니다.
  • alpine:latest: 사용할 Alpine Linux 이미지의 이름입니다.
  • /bin/ash: 컨테이너 내에서 실행할 명령입니다.

ash 쉘은 Alpine Linux 의 기본 쉘이며, 더 일반적으로 사용되는 bash 쉘과 유사한 환경을 제공합니다.

Alpine Linux 컨테이너 탐색

컨테이너가 실행되면 Alpine Linux 환경을 탐색할 수 있습니다. 다음은 시도해 볼 수 있는 몇 가지 명령어입니다.

/                                    ## uname -a
Linux 8b3d9f8a3d95 5.10.104-linuxkit #1 SMP Fri Mar 25 18:02:00 UTC 2022 x86_64 Linux
/                                    ## apk add --no-cache htop
/                                    ## htop

이러한 명령어는 커널 버전을 표시하고 htop 시스템 모니터링 도구를 설치한 다음 컨테이너 내에서 실행 중인 프로세스를 관찰하기 위해 htop을 실행합니다.

컨테이너 종료

컨테이너를 종료하려면 exit 명령어를 사용할 수 있습니다.

/ ## exit

이렇게 하면 컨테이너가 중지되고 호스트 시스템의 명령 프롬프트로 돌아갑니다.

컨테이너 다시 시작

컨테이너를 다시 시작하려면 docker start 명령어를 사용할 수 있습니다.

docker start -i 8b3d9f8a3d95

8b3d9f8a3d95를 Alpine Linux 컨테이너의 컨테이너 ID 또는 이름으로 바꿔주세요.

Alpine Linux 컨테이너를 시작하고 탐색하고 관리하는 방법을 이해함으로써 이 경량 및 안전한 Linux 배포판을 Docker 기반 애플리케이션에서 활용하기 시작할 수 있습니다.

Alpine Linux 컨테이너 커스터마이징

커스텀 Alpine Linux 이미지 생성

Alpine Linux 컨테이너를 커스터마이징하려면 Alpine Linux 베이스 이미지를 기반으로 커스텀 Docker 이미지를 생성할 수 있습니다. 다음은 Dockerfile 예시입니다.

FROM alpine:latest

## 추가 패키지 설치
RUN apk add --no-cache nginx

## 커스텀 설정 파일 복사
COPY nginx.conf /etc/nginx/nginx.conf

## 필요한 포트 노출
EXPOSE 80

## 기본 명령 설정
CMD ["nginx", "-g", "daemon off;"]

이 Dockerfile 에서 다음 작업을 수행합니다.

  1. 최신 Alpine Linux 베이스 이미지로 시작합니다.
  2. apk 패키지 관리자를 사용하여 Nginx 웹 서버를 설치합니다.
  3. 커스텀 Nginx 설정 파일을 컨테이너로 복사합니다.
  4. Nginx 웹 서버를 위해 포트 80 을 노출합니다.
  5. Nginx 웹 서버를 시작하는 기본 명령을 설정합니다.

커스텀 이미지를 생성하려면 다음 명령을 실행합니다.

docker build -t my-alpine-nginx .

이렇게 하면 현재 디렉터리의 Dockerfile 을 기반으로 my-alpine-nginx라는 새 Docker 이미지가 생성됩니다.

커스텀 Alpine Linux 컨테이너 실행

커스텀 이미지를 생성한 후에는 해당 이미지를 기반으로 컨테이너를 실행할 수 있습니다.

docker run -d -p 8080:80 my-alpine-nginx

이 명령에서 다음 작업을 수행합니다.

  • -d: 컨테이너를 분리 모드 (백그라운드) 로 실행합니다.
  • -p 8080:80: 호스트의 포트 8080 을 컨테이너의 포트 80 으로 매핑합니다.
  • my-alpine-nginx: 생성한 커스텀 Alpine Linux 이미지의 이름입니다.

이제 웹 브라우저에서 http://localhost:8080을 방문하여 컨테이너에서 실행 중인 Nginx 웹 서버에 접근할 수 있습니다.

Alpine Linux 컨테이너를 커스터마이징하면 추가 소프트웨어 설치, 설정 파일 복사 또는 다른 포트 노출과 같이 특정 요구 사항에 맞게 조정할 수 있습니다. 이러한 유연성으로 인해 Alpine Linux 는 효율적이고 경량적인 Docker 기반 애플리케이션을 구축하기에 좋은 선택입니다.

요약

이 포괄적인 Docker 튜토리얼에서는 경량 및 안전한 Alpine Linux 배포판을 기반으로 컨테이너를 실행하는 방법을 배웠습니다. Alpine Linux 컨테이너를 생성하는 과정과 특정 요구 사항에 맞게 커스터마이징하는 방법을 살펴보았습니다. Docker 의 기능과 Alpine Linux 의 장점을 활용하여 개발 및 배포 프로세스를 간소화하고, 궁극적으로 Docker 기반 애플리케이션의 효율성을 향상시킬 수 있습니다.