systemd-nspawn의 ntpd

systemd-nspawn의 ntpd

서버 인프라의 다양한 부분을 컨테이너화하려고 하는데, 컨테이너에서 실행하려는 서비스 중 하나가 ntp 데몬입니다.

저는 systemd-nspawn(systemd 233)을 하이퍼바이저로 사용하고 컨테이너 내부의 init 프로세스를 사용합니다.

ntpd 버전은 4.2.8p10입니다.

컨테이너 내에서 ntpd를 시작하려고 할 때마다 cap_set_proc()"작업이 허용되지 않음" 오류와 함께 충돌이 발생합니다.

21 Oct 11:10:23 ntpd[51]: ntpd [email protected] Fri Oct 20 23:28:39 UTC 2017 (1): Starting
21 Oct 11:10:23 ntpd[51]: Command line: ntpd -g -n -u ntp:ntp
21 Oct 11:10:23 ntpd[51]: Cannot set RLIMIT_MEMLOCK: Operation not permitted
21 Oct 11:10:23 ntpd[51]: proto: precision = 0.335 usec (-21)
21 Oct 11:10:23 ntpd[51]: Listen normally on 0 v4wildcard 0.0.0.0:123
21 Oct 11:10:23 ntpd[51]: Listen normally on 1 lo 127.0.0.1:123
21 Oct 11:10:23 ntpd[51]: Listening on routing socket on fd #18 for interface updates
21 Oct 11:10:23 ntpd[51]: mlockall(): Cannot allocate memory
21 Oct 11:10:23 ntpd[51]: start_kern_loop: ntp_loopfilter.c line 1119: ntp_adjtime: Operation not permitted
21 Oct 11:10:23 ntpd[51]: set_freq: ntp_loopfilter.c line 1082: ntp_adjtime: Operation not permitted
21 Oct 11:10:23 ntpd[51]: cap_set_proc() failed to drop root privs: Operation not permitted

내가 지금까지 시도한 것 :

  1. 기능을 활성화하지 않고 ntpd를 빌드하면 정상적으로 시작되지만 여전히 동일한 ntp_adjtime시스템 호출 권한 문제가 있습니다.
  2. --private-users=0가 있든 없든 systemd-nspawn을 실행합니다 --private-users.
  3. systemd-nspawn 자체의 기능 사용(주로 CAP_SYS_TIMECAP_NET_BIND_SERVICE)
  4. 컨테이너 내에서 ntpd 기능을 사용하십시오.

이 중 어느 것도 긍정적인 결과로 이어지지 않으며 내가 무엇을 놓치고 있는지 궁금합니다. 어떤 아이디어라도 크게 감사하겠습니다.

관련 정보