728x90
CentOS 7 컨테이너 내에서 systemctl을 사용하는 방법(centos init)
호스트 운영체제가 CentOS 7일 경우
테스트 환경
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
privileged 모드로 컨테이너 실행
- Docker 컨테이너를 실행할 때 --privileged 플래그를 사용하여 컨테이너를 특권 모드로 실행합니다.
docker run -d --privileged --cap-add=SYS_ADMIN --privileged --name centos7 centos:7 /sbin/init
Docker 컨테이너 목록 확인
docker ps -a
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd898ff016d1 centos:7 "/sbin/init" 6 minutes ago Up 6 minutes centos7
Docker 컨테이너 CentOS 7에 접속
docker exec -it centos7 bash
systemctl 서비스 상태 확인
systemctl status
$ docker exec -it centos7 bash
[root@bd898ff016d1 /]# systemctl status
● bd898ff016d1
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2023-01-18 00:06:17 UTC; 8min ago
CGroup: /docker/bd898ff016d12d203e14db9f74539a32b895db122315c3ad7f80c6a072929c99
├─1 /sbin/init
└─system.slice
├─systemd-logind.service
│ └─47 /usr/lib/systemd/systemd-logind
├─dbus.service
│ └─46 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─systemd-udevd.service
│ └─27 /usr/lib/systemd/systemd-udevd
├─system-getty.slice
│ └─getty@tty1.service
│ └─66 /sbin/agetty --noclear tty1 linux
└─systemd-journald.service
└─17 /usr/lib/systemd/systemd-journald
[root@bd898ff016d1 /]#
728x90
호스트 운영체제가 Ubuntu일 경우
테스트 환경
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
** 호스트 운영체제가 우분투일 경우에 centos7 컨테이너 systemctl 명령을 사용할 수 없다.
privileged 모드로 컨테이너 실행
docker run -d --privileged --cap-add=SYS_ADMIN --privileged --name centos8 centos /sbin/init
Docker 컨테이너 목록 확인
docker ps -a
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2e657ea6557 centos "/sbin/init" 12 seconds ago Up 10 seconds centos8
Docker 컨테이너 CentOS 8에 접속
docker exec -it centos8 bash
systemctl 서비스 상태 확인
systemctl status
$ docker exec -it centos8 bash
[root@f2e657ea6557 /]# systemctl status
● f2e657ea6557
State: degraded
Jobs: 0 queued
Failed: 1 units
Since: Wed 2023-01-18 00:49:15 UTC; 39s ago
CGroup: /
├─init.scope
│ ├─ 1 /sbin/init
│ ├─71 bash
│ ├─85 systemctl status
│ └─86 [less]
└─system.slice
├─systemd-udevd.service
│ └─35 /usr/lib/systemd/systemd-udevd
├─systemd-journald.service
│ └─27 /usr/lib/systemd/systemd-journald
└─dbus.service
└─52 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
[root@f2e657ea6557 /]#
CentOS 컨테이너에서 systemd를 실행하는 것은 일반적으로 권장되지 않으며, 컨테이너화된 환경에서 더 나은 방식으로 서비스 관리를 수행하는 것이 좋습니다. Docker 컨테이너 내에서 서비스를 실행하기 위해 Entrypoint, CMD 또는 Supervisord와 같은 다른 방법을 고려하는 것이 일반적인 접근 방식입니다.
728x90
'리눅스' 카테고리의 다른 글
[리눅스] centos 8 Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist (0) | 2023.01.25 |
---|---|
[draft] 우분투에 HashiCorp Vault를 설치하는 방법 (0) | 2023.01.18 |
BIND DNS 서버에서 뷰(View)와 존 전송(Zone Transfer) 테스트하는 방법 (0) | 2023.01.16 |
bind rndc 명령어 (0) | 2023.01.16 |
[리눅스] bind를 사용한 마스터-슬레이브 dns 구성하기 (0) | 2023.01.16 |