반응형
CentOS 7 컨테이너 내에서 init를 사용하는 방법(centos7 init)
기본적으로 Docker 컨테이너는 systemd를 지원하지 않기 때문에 다음과 같은 방법을 사용하여 systemctl을 활성화할 수 있습니다.
1. Dockerfile 설정
Docker 이미지를 빌드할 때 systemd 지원을 활성화하려면 Dockerfile에 다음 명령을 추가합니다.
vim Dockerfile
# Use the CentOS 7 base image
FROM centos:7
ENV container docker
# Install systemd and necessary packages
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
# Mount /run/systemd/system
VOLUME ["/sys/fs/cgroup"]
# Set systemd environment variables
CMD ["/usr/sbin/init"]
(또는)
FROM centos:7
RUN yum -y install epel-release openssh-server initscripts passwd yum-utils wget tar sudo
RUN (cd /lib/systemd/system/; rm -rf sysinit.target.wants basic.target.wants anaconda.target.wants)
RUN (cd /lib/systemd/system/sockets.target.wants/; rm -f udev* initctl*)
RUN rm -f /etc/security/limits.d/20-nproc.conf
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/sysctl", "-w", "system.slice.default_user=root"]
이 Dockerfile은 systemd를 설치하고 SSH를 사용하여 root 계정에 로그인할 수 있도록 설정합니다.
2. Docker 이미지 빌드
Dockerfile을 사용하여 이미지를 빌드합니다.
docker build --tag anti1346/centos7:init --no-cache .
3. 컨테이너 실행
이미지를 사용하여 컨테이너를 실행합니다. --privileged 플래그를 사용하여 특권 모드로 실행해야 합니다.
docker run --privileged -d --name centos7-init anti1346/centos7-init:latest
4. 컨테이너에 접속
컨테이너에 접속하여 systemctl 명령을 실행할 수 있습니다.
docker exec -it [컨테이너 ID 또는 이름] /bin/bash
이제 컨테이너 내에서 systemctl 명령을 실행할 수 있습니다.
단, 이 방법은 컨테이너 내에서 systemd를 사용할 수 있게 해주지만 일반적으로 권장되는 방법은 아닙니다. Docker를 사용할 때 서비스 관리를 다른 방식으로 수행하는 것이 더 효율적일 수 있습니다.
728x90
반응형
'리눅스' 카테고리의 다른 글
우분투에서 VSFTPD를 설치하고 설정하는 방법 (0) | 2023.11.02 |
---|---|
PHP PDO(pdo-mysql) 모듈을 활성화하는 방법 (0) | 2023.11.01 |
자빅스(Zabbix) 알람을 Slack과 연동하는 방법 (0) | 2023.10.31 |
System V init(init)와 Systemd의 특징과 주요 차이점 (0) | 2023.10.30 |
Elasticsearch 클러스터의 상태를 점검하고 모니터링하는 방법 (0) | 2023.10.30 |