English

portablectl — 이식형 서비스 관리

Linux / 서비스 및 프로세스 관리 / portablectl.html

서비스 및 프로세스 관리원문등록 2026-10-18T22:00:00+09:00

💬 "portablectl 명령어"

portablectl는 이식형 서비스 관리 systemd 포터블 서비스 이미지를 등록·적용·제거합니다. 서비스를 OCI 이미지처럼 이동 가능하게 합니다.

서비스 바이너리+의존성을 하나의 이미지로 패키징합니다. 호스트에 설치 없이 서비스 실행이 가능합니다.

  • 개념: 서비스 바이너리+의존성을 하나의 이미지로 패키징합니다.
  • 주요 기능: 호스트에 설치 없이 서비스 실행이 가능합니다.
  • 장점: AppImage·디렉터리·OCI 컨테이너 형식을 지원합니다.
  • 활용: 호스트와 서비스의 systemd 환경을 분리합니다.

설치 및 다운로드

portablectl는 패키지 매니저 또는 공식 스크립트로 설치합니다.

환경명령
systemd 내장 (239+)portablectl --version
활성화sudo systemctl enable --now systemd-portabled
이미지 생성mkosi 또는 ostree로 빌드
확인portablectl list

설치 확인은 portablectl --version으로 합니다.

자주 쓰는 옵션

옵션설명
portablectl attach <image>포터블 서비스 이미지를 등록합니다
portablectl detach <image>이미지를 제거합니다
portablectl list등록된 이미지 목록
portablectl inspect <image>이미지 내부 구조를 확인합니다
portablectl remove <image>이미지 파일을 삭제합니다

필수 명령어 조합 3가지

  • portablectl attach myapp.raw — 서비스 이미지 등록
  • systemctl enable --now myapp.service — 포터블 서비스 시작
  • portablectl detach myapp.raw — 완전 제거

💬 "실제 서버에서 portablectl를 사용하는 예시를 보여줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 설치 확인

systemd-portabled 상태를 확인합니다.

portablectl --version && systemctl status systemd-portabled

2단계 · 이미지 확인

이미지 내부 구조를 확인합니다.

portablectl inspect /var/lib/portable/myapp.raw

3단계 · 등록

이미지를 등록하고 시작합니다.

sudo portablectl attach /var/lib/portable/myapp.raw

실제 실행 화면

portablectl로 서비스 이미지를 등록한 결과입니다.

portablectl 명령어 실행 결과

실제 운영 중인 서버

실무에서는 이렇게 씁니다

1. 서비스 이미지 등록

상황 — 빌드한 이미지를 등록합니다.

sudo portablectl attach /var/lib/portable/myapp.raw

결과 — 이미지가 /var/lib/portables/에 추출됩니다.

포인트 — 호스트 설정을 건드리지 않습니다.

2. 서비스 시작

상황 — 포터블 서비스를 시작합니다.

systemctl enable --now myapp.service

결과 — systemd에 symlink가 생성됩니다.

포인트 — 포터블 서비스도 호스트 systemd에서 관리됩니다.

실제 실행 화면

포터블 서비스를 시작하고 제거한 결과입니다.

portablectl 명령어 실행 결과 2

실제 운영 중인 서버

주의할 점

  • 포터블 서비스는 systemd 239 이상이 필요합니다. 구버전에서는 동작하지 않습니다.
  • 이미지는 mkosi나 ostree로 빌드해야 합니다. 그냥 tar로 만든 디렉터리는 인식되지 않습니다.
  • 포터블 서비스도 호스트 커널을 씁니다. 커널 모듈 의존성은 이미지에 포함되지 않습니다.