docker run 으로 특별한 옵션 없이 컨테이너를 실행시키면 systemctl 실행시 퍼미션 에러가 발생하게 된다.

 

해결 방법은 두가지인데 컨테이너 생성시 /bin/bash 대신 /sbin/init을 백그라운드 모드로 실행 시킨후 exec 명령어로 /bin/bash를 실행 시키면 된다.

더보기

docker run -d  --name <name> <image>:<tag> /sbin/init                  (-d : 백그라운드 옵션)

docker exec -i -t <name> /bin/bash

 

 또 한가지는 docker run 실행시 --privileged 옵션을 추가하여 실행시키면 systemctl 같은 프로그램을 사용할 수 있게된다.

 

도커 컨테이너는 일반적으로 보안상 unprivileged 모드로 실행 되는데 이때 --privileged 옵션을 추가하거나 --cap-add나 --cap-drop을 사용하여 필요한 기능만 추가하거나 제거해서 사용할 수도 있다.