centos 컨테이너를 만들어서 systemctl 명령어를 사용하려고 하는데 안 되는 경우가 있을 것이다.
$ systemctl
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
기본 centos 이미지는 cgroups(control groups)를 이용할 수 없어 systemctl을 사용할 수 없는 문제로 발생한다. 이를 해결하기 위해서 다음의 명령어를 사용한다.
$ docker run --privileged -d --name <컨테이너이름> <이미지이름> /sbin/init
도커 컨테이너는 기본적으로 Unprivileged 모드로 실행되게 되는데 이 모드에서는 시스템의 주요 자원에 접근할 수 있는 권한이 부족하기 때문에 특정 장치 등의 시스템 자원에 접근할 수 없다. 그래서 시스템의 주요 자원에 접근하기 위해서는 도커 컨테이너를 Privileged 모드로 실행시켜 줘야 한다.
- --privileged : 도커 컨테이너를 Privileged 모드로 실행
- -d : 도커 컨테이너를 백그라운드로 실행
- /sbin/init : init 스크립트 실행
그리고 컨테이너에 bash 쉘로 접근하기 위해 다음의 명령어를 사용한다.
$ docker exec -it <컨테이너이름> bash
'Docker' 카테고리의 다른 글
[Docker] AWS EC2에 Docker로 MySQL 띄우기 (0) | 2022.01.08 |
---|---|
[Docker] ubuntu에서 docker 설치 하는 방법 (1) | 2021.12.15 |
[Docker] dockerfile로 flask 배포하기 (0) | 2021.12.09 |
[Docker] Docker로 리눅스(centos) 설치 (1) | 2021.12.09 |