portablectl — 이식형 서비스 관리
Linux / 서비스 및 프로세스 관리 / portablectl.html
💬 "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로 서비스 이미지를 등록한 결과입니다.

실제 운영 중인 서버
실무에서는 이렇게 씁니다
1. 서비스 이미지 등록
상황 — 빌드한 이미지를 등록합니다.
sudo portablectl attach /var/lib/portable/myapp.raw
결과 — 이미지가 /var/lib/portables/에 추출됩니다.
포인트 — 호스트 설정을 건드리지 않습니다.
2. 서비스 시작
상황 — 포터블 서비스를 시작합니다.
systemctl enable --now myapp.service
결과 — systemd에 symlink가 생성됩니다.
포인트 — 포터블 서비스도 호스트 systemd에서 관리됩니다.
실제 실행 화면
포터블 서비스를 시작하고 제거한 결과입니다.

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