CentOS 8 Docker 컨테이너에서 systemctl 사용하기(/sbin/init)
일반적으로 Docker 컨테이너 내부에서는 systemctl 명령이 정상적으로 동작하지 않습니다. 그 이유는 컨테이너가 systemd(init 시스템) 를 기본으로 실행하지 않기 때문입니다.
하지만 CentOS 8 컨테이너를 systemd 기반으로 실행하면 컨테이너 내부에서도 systemctl을 사용할 수 있습니다.
테스트 환경
운영체제 정보
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
Host OS는 CentOS 7이지만 컨테이너 이미지는 CentOS 8 입니다.
1. systemd를 사용하는 CentOS 8 컨테이너 실행
Docker 컨테이너 실행
docker run -it -d \
--name centos8 \
--privileged \
--cap-add=SYS_ADMIN \
centos:8 /sbin/init
- --privileged : systemd 동작에 필요한 권한 부여
- --cap-add=SYS_ADMIN : systemctl 사용을 위한 capability
- /sbin/init : systemd(PID 1) 실행
2. 컨테이너 실행 확인
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ec200c2c626 centos:8 "/sbin/init" 14 seconds ago Up 10 seconds centos8
3. 컨테이너 내부 진입 및 systemctl 확인
컨테이너 접속
docker exec -it centos8 bash
systemctl 상태 확인
systemctl status
● 8ec200c2c626
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2023-01-18 00:17:23 UTC; 1min 0s ago
CGroup: /docker/8ec200c2c626b5f67898a0d4e6ff358bcfbdd12ef43ad026ed65b9297b7b7b85
├─system.slice
│ ├─dbus.service
│ │ └─48 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
│ ├─systemd-udevd.service
│ │ └─34 /usr/lib/systemd/systemd-udevd
│ └─systemd-journald.service
│ └─21 /usr/lib/systemd/systemd-journald
└─init.scope
└─1 /sbin/init
PID 1이 /sbin/init이며 systemd가 정상적으로 동작 중인 상태입니다.
4. 서비스 관리 예시
컨테이너 내부에서 일반 서버처럼 서비스 제어가 가능합니다.
systemctl start sshd
systemctl enable sshd
systemctl status sshd
'리눅스' 카테고리의 다른 글
| [draft] sudo 명령어 (1) | 2026.03.03 |
|---|---|
| [draft] 우분투에 Nginx와 ModSecurity를 설치하고 OWASP ModSecurity CRS를 적용하는 방법 (0) | 2026.03.03 |
| [draft] 리눅스 배포판(Linux Distros) (0) | 2026.03.03 |
| [draft] Docker Compose로 GitLab Omnibus 컨테이너를 구성하는 방법 (0) | 2026.03.03 |
| [draft] 개인 키를 사용하여 공개 키를 생성하는 방법 (0) | 2026.03.03 |