Crystal auf Docker installieren: So fügen Sie das Crystal-Repository in der Dockerdatei zu Docker hinzu

Dockerfile (Auszug)

ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
RUN apt-get update && apt-get install -y \
         software-properties-common \
         baubedingt \
         libevent-dev \
         libssl-dev \
         libxml2-dev \
         libyaml-dev \
         libgmp-dev \
         libreadline-dev \
         apt-transport-https \
         iputils-ping \
         git \
         Begabung \
         nano \
         openssh-server \
         && apt-key adv -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54 \
         && add-apt-repository 'deb https://dist.crystal-lang.org/apt crystal main' \
         && apt-get update \
         && apt-get install -y crystal \
         && rm -rf /var/lib/apt/lists/* \
         && mkdir /root/.ssh

Die ENV APT_KEY_DONT_WARN_ON_DANGEROUSE_USAGE ist benötigt damit apt-key adv nicht daran erstickt, dass es nicht über ein Terminal ausgeführt wird.

Um das Crystal-Repository hinzuzufügen, muss der Schlüssel installiert werden

W: GPG-Fehler: https://dist.crystal-lang.org/apt Kristall InRelease: Die folgenden Signaturen konnten nicht verifiziert werden, da der öffentliche Schlüssel nicht verfügbar ist: NO_PUBKEY 09617FD37CC06B54
E: Das Endlager 'https://dist.crystal-lang.org/apt crystal InRelease' ist nicht signiert.

Wenn Sie den Schlüssel mithilfe einer Dockerdatei hinzufügen, erhalten Sie möglicherweise die folgende Fehlermeldung:

Ausgeführt: /tmp/apt-key-gpghome.daecBAEPSJ/gpg.1.sh -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54
gpg: Schlüsselserver-Empfang fehlgeschlagen: Kann angeforderte Adresse nicht zuweisen

Das liegt daran, dass gpg nicht in der Lage ist, sich an eine IPv6-Adresse zu binden. Daher müssen Sie

IPv6-Unterstützung auf Ihrem Host für Docker aktivieren:

bearbeiten/erstellen /etc/docker/daemon.json

{
  "ipv6": wahr,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

Und starten Sie den Docker-Dienst neu:

service docker restart


die feste-cidr-v6 ist NICHT wahlweise als https://docs.docker.com/config/daemon/ipv6/ glauben machen könnte.

Test für IPv6-Unterstützung:

docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
wenn nichts zurückgegeben wird, dann ist ipv6 NICHT aktiviert
Beispielausgabe mit aktiviertem IPv6:

max@morpheus:~/docker$ docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
163: eth0@if164: mtu 1500 state UP
     inet6 2001:db8:1::242:ac11:2/64 scope global flags 02
        gültig_lft für immer bevorzugt_lft für immer
     inet6 fe80::42:acff:fe11:2/64 Bereich link tentativ
        gültig_lft für immer bevorzugt_lft für immer
2001:db8:1::/64 dev eth0 metrisch 256
fe80::/64 dev eth0 Metrik 256
standardmäßig via 2001:db8:1::1 dev eth0 metric 1024
ff00::/8 dev eth0 Metrik 256



Die Docker Application Container Engine konnte nicht gestartet werden.

tail -n 50 /var/log/syslog

Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770500563+01:00″ level=warning msg="Your kernel does not support swap memory limit"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770617796+01:00″ level=warning msg="Your kernel does not support cgroup rt period"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770656361+01:00″ level=warning msg="Your kernel does not support cgroup rt runtime"

Jan 11 21:39:40 morpheus dockerd[697]: time="2019-01-11T21:39:40.800355314+01:00″ level=info msg="Default bridge (docker0) ist mit einer IP-Adresse 172.17.0.0/16 zugewiesen. Die Daemon-Option -bip kann verwendet werden, um eine bevorzugte IP-Adresse zu setzen.

Jan 11 21:39:40 morpheus dockerd[697]: Fehler beim Starten des Daemons: Fehler beim Initialisieren des Netzwerk-Controllers: Fehler beim Erstellen des Standard-"Bridge"-Netzwerks: Es konnte kein verfügbarer, nicht überlappender IPv6-Adresspool unter den Standardadressen gefunden werden, der dem Netzwerk zugewiesen werden kann

Wenn der Docker-Daemon nicht startet, sehen Sie in /var/log/syslog nach, um den Grund zu finden.

Hier bedeutet es wahrscheinlich dass Sie die Option fixed-cidr-v6 nicht hinzugefügt haben wie von mir oben angegeben! Docker, seit ein paar Versionen, scheint dies zu erfordern. Es gibt ein Problem in GitHub über sie.

und das alles für ...

Bild

Referenzen

https://github.com/inversepath/usbarmory-debian-base_image/issues/9

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/ipv6/

https://github.com/moby/moby/issues/36954