Ich habe die folgende Docker-Datei zum Erstellen eines Containers mit einem PowerDNS-Recursor:
FROM debian:stretch-slim
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install --no-install-recommends -y \
pdns-recursor && \
rm -rf /var/lib/apt/lists/* && \
apt-get clean
COPY ./configuration/recursor.conf /etc/powerdns/recursor.conf
RUN chown -R :pdns /etc/powerdns/ && \
chmod 0750 /etc/powerdns/ && \
chmod 0640 /etc/powerdns/recursor.conf
EXPOSE 8699
ENTRYPOINT ["/usr/sbin/pdns_recursor", "--daemon=no"]
Mein recursor.conf
sieht so aus:
config-dir=/etc/powerdns
forward-zones=resolver1.opendns.com=208.67.222.222
hint-file=/usr/share/dns/root.hints
local-address=0.0.0.0
local-port=8699
quiet=yes
security-poll-suffix=
setgid=pdns
setuid=pdns
IPv6 ist auf dem Hypervisor deaktiviert.
Das Problem ist, dass Docker den Container mit nicht richtig stoppen kann docker stop recursor
. Nach einiger Zeit beendet der OOMKiller das Programm mit folgenden Informationen:
Exited (137) 2 seconds ago
Ich habe im Internet gesucht und die Signale 128
+ 9
= 137
bedeuten, dass ich nicht genügend RAM habe, was einfach nicht der Fall ist. Wenn ich docker exec -it recursor /bin/bash
PID 1 ( kill -9 -- 1
) innerhalb des Containers ausführe und versuche, es zu beenden, bekomme ich keine Reaktion - der Dienst läuft einfach weiter, als wäre nichts passiert.
Ich habe auch versucht, den Recursor im Daemon-Modus zu starten - das gleiche Ergebnis.
Hat jemand eine Idee warum das so ist?
kill -- 1
(PID 1), und sie werden sofort gestoppt. Auch wenn ichdocker stop container
von außen herauskomme, hören sie sofort auf. Ich weiß über das Roughdocker kill container
Bescheid und ich weiß, dass ich ihn mit seiner PID vom Host töten kann, aber das ist nicht der Kern dieser Angelegenheit.-9
funktioniert nicht für PID 1. Aber ich muss noch herausfinden, warum ichExited (137)
mit einem normalendocker stop
:)docker inspect --format '{{.State.Pid}}' containername