![Docker und Einstellen der Konnektivität](https://rvso.com/image/1601539/Docker%20und%20Einstellen%20der%20Konnektivit%C3%A4t.png)
Ich habe einen Container aus einem öffentlichen Repository gezogen und möchte ein Paket darin installieren. Aber kein Erfolg... Kann mir jemand helfen? Wie nehme ich die Einstellungen für die Konnektivität von Docker zu Paket-Repositorys vor?
[root@adf2 adf2_umb_docker]# docker ps -l
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
8a9a015c5301 devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 "bash" vor 8 Minuten Up 8 Minuten admiring_shirley
[root@adf2 adf2_umb_docker]# docker run devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi18.4 bash -c "apt-get -y install vim"
Paketlisten werden gelesen...
Abhängigkeitsbaum wird erstellt ...
Statusinformationen werden gelesen...
E: Paket vim konnte nicht gefunden werden
Der Admin hat mich über dieses Protokoll der Firewall informiert:
23. Aug 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C OUTPUT -m addrtype --dst-type LOCAL -j DOCKER ! --dst 127.0.0.0/8' fehlgeschlagen: iptables: Keine Kette/Ziel/Übereinstimmung mit diesem Namen.
23. Aug. 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' fehlgeschlagen: iptables: Keine Kette/Ziel/Übereinstimmung mit diesem Namen.
23. Aug. 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -j DOCKER-ISOLATION' fehlgeschlagen: iptables: Keine Kette/Ziel/Übereinstimmung mit diesem Namen.
23. Aug. 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C POSTROUTING -s 192.168.0.0/20 ! -o docker0 -j MASQUERADE' fehlgeschlagen: iptables: Keine Kette/Ziel/Übereinstimmung mit diesem Namen.
23. Aug. 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t nat -C DOCKER -i docker0 -j RETURN' fehlgeschlagen: iptables: Ungültige Regel (gibt es in dieser Kette eine passende Regel?).
23. Aug 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -D FORWARD -i docker0 -o docker0 -j DROP' fehlgeschlagen: iptables: Ungültige Regel (gibt es in dieser Kette eine passende Regel?).
23. Aug 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 -o docker0 -j ACCEPT' fehlgeschlagen: iptables: Ungültige Regel (gibt es in dieser Kette eine passende Regel?).
23. Aug 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -i docker0 ! -o docker0 -j ACCEPT' fehlgeschlagen: iptables: Ungültige Regel (gibt es in dieser Kette eine passende Regel?).
23. Aug 23:02:08 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT' fehlgeschlagen: iptables: Ungültige Regel (existiert in dieser Kette eine passende Regel?).
23. Aug. 23:02:09 adf2 firewalld[5882]: WARNUNG: COMMAND_FAILED: '/usr/sbin/iptables -w2 -t filter -C FORWARD -o docker0 -j DOCKER' fehlgeschlagen: iptables: Keine Kette/Ziel/Übereinstimmung mit diesem Namen.
Antwort1
So fügt man in Docker kein Paket hinzu. Mit Ihrer Methode lässt man eine Containerinstanz ein Paket zu sich selbst hinzufügen. Dadurch versucht der Container, auf das Internet zuzugreifen, was durch lokale Regeln verboten sein kann. Dies schafft auch zukünftige Probleme:
- So sichern Sie diesen Container
- So bauen Sie es bei Bedarf wieder auf
Der richtige Weg istAbleiten des Images mithilfe einer Docker-Datei:
FROM devcafe/cmake-cookbook_circleci_ubuntu16.04-pgi/18.4
RUN apt-get -y install vim
Anschließend erstellen Sie das Image mit:
docker build -t "TheDerivedImageName" $TheDirectpryWithTheDockerfFile
Und führen Sie das Image bei Bedarf aus, indem Sie daraus eine Containerinstanz erstellen:
docker run TheDerivedImageName
Das Dockerfile und die zugehörigen Dateien sind Hostdateien: Sie können gesichert, in ein Quellcodeverwaltungssystem (Git usw.) eingefügt und mit anderen Personen geteilt werden usw.
Darüber hinaus ist die Installation von Vim im Docker-Image unnötig und deutet darauf hin, dass Sie Docker möglicherweise nicht richtig verwenden. Wenn Sie Dateien im Container erstellen/bearbeiten müssen, können Sie entweder:
- Fügen Sie sie zur Build-Zeit mithilfe einer
COPY
Anweisung im Dockerfile in das Image ein. - Geben Sie eine Datei oder ein Verzeichnis auf dem Host für den Container frei, indem Sie"Bind-Mount", und bearbeiten Sie sie vom Host aus.