환경
- Mac OS
- docker for mac 4.3.2 version
- Centos:7 이미지로 systemctl을 실행해야 되는 상황
보통은
centos7/systemd 이미지를 사용하거나,
docker run --privileged --name httpd -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 -d httpd /sbin/init
와 같이 docker run 시 --privileged 옵션을 주고 /sbin/init 을 뒤에 붙이고,
docker exec -ti httpd /bin/bash
와 같이 도커 컨테이너를 실행하면 systemctl이 실행이 되는데...
아무리 해도 Failed to create bus connection: No such file or directory 오류가 났었다;;
ps -ef | grep systemd 를 해보니 systemd 가 작동하지 않는 상황이었다.
계속 서칭해보니 원인은... docker for mac 버전 + centos 7 의 콤보 문제였다 ^^...
Docker Desktop now uses cgroupv2. If you need to run systemd in a container then:
- Ensure your version of systemd supports cgroupv2. It must be at least systemd 247. Consider upgrading any centos:7 images to centos:8.
- Containers running systemd need the following options: --privileged --cgroupns=host -v /sys/fs/cgroup:/sys/fs/cgroup:rw.
docker for mac 4.3.0 버전 이상부터는 cgroupv2를 쓰기 때문에, 컨테이너 안에서 systemd를 작동시키려면
- centos:8 을 사용하거나
- 컨테이너 run 시 --privileged --cgroupns=host -v /sys/fs/cgroup:/sys/fs/cgroup:rw 옵션을 주면 된다.
'인프라,데이터 > Docker, Kubernetes' 카테고리의 다른 글
K6로 부하테스트 하기(도커, 쿠버네티스 환경) (0) | 2023.03.19 |
---|---|
Kubernetes 배포 시 가능한 hook 들 + 특정 스크립트 hook으로 실행하기 (0) | 2022.05.18 |
Mac ssh to docker-desktop node (0) | 2022.05.16 |
Kubernetes 특정 경로로 로그 파일 수집하기(nginx access 로그 만들기) (0) | 2022.01.11 |
Kubernetes에서 Logstash(sqs output)를 사용해 elasticsearch, kibana로 로그 확인 (0) | 2021.12.28 |