2023. 1. 13. 14:34ㆍ프로그래밍/Docker
Docker에서 centOS7을 사용할 일이 생겨서 설정을 하고 있는데 nginx를 설치하고 서비스 데몬을 실행하려는데
Failed to get D-Bus connection: Operation not permitted
와
Failed to get D-Bus connection: No such of file or directory
에러가 뜨는 것...
국내외 블로거 글과 스택, 깃의 힘을 빌려봐 해결하려 했으나 실패했다.
원래는 아래 docker run 인자에
run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro /usr/sbin/init
privileged 옵션과 cgroup을 마운트 시킨 후 init을 시키는 방법으로 systemctl을 실행할 수 있다.
하지만
Docker 4.2.x 버전 이후로 cgroups 설정이 변경이 되었던 것!
아마 해당 설정이 변경된 후로 cgroupsV1을 프로비저닝 할 때 Docker의 cgroups설정으로 systemd에 액세스 할 수 없게 된 게 아닐까 싶습니다.
그래서 exec로 접속 시 privileged 옵션을 줘도 systemctl명령이 안 먹히는 게 아니었을까?... 요?
해결법
Mac M1, Intel에서 정상적으로 작동합니다. (M2는 없어서 몰?루)
윈도우는 설정파일이 어디에 있는지 몰?루
centos:7
centos/systemd
두 이미지 모두 잘 됩니다.
우선 Docker settings.json 파일에서 deprecatedCgroupv1의 설정값을 확인해 보자
cat ~/Library/Group\ Containers/group.com.docker/settings.json | grep deprecatedCgroupv1
그러면 settings.json파일에서 deprecatedCgroupv1의 설정값을 변경하자
vi ~/Library/Group\ Containers/group.com.docker/settings.json
값을 변경했다면 도커를 재시작하기.
재시작 후 privileged와 -d옵션 그리고 init을 붙여 실행 후 systemctl status를 치면!
docker run --privileged -d --name centos7 -p 9999:80 -v /Users/kyaru/Desktop/dockervl:/data/windows --net nee centos/systemd init
잘 된다!!
'프로그래밍 > Docker' 카테고리의 다른 글
도커로 나만의 웹 아카이브 저장소 만들기 (0) | 2022.12.15 |
---|---|
Mac에서 Docker 가지고 놀아보기 [1/2] (0) | 2022.03.08 |
Docker란? (0) | 2022.03.08 |