Crystal installeren op Docker: hoe de Crystal repository toe te voegen aan Docker in het Dockerfile

Dockerfile (uittreksel)

ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
RUN apt-get update && apt-get install -y
         software-eigenschappen-gemeenschappelijk
         bouw-essentieel
         libevent-dev
         libssl-dev
         libxml2-dev
         libyaml-dev
         libgmp-dev
         libreadline-dev
         apt-transport-https
         iputils-ping
         git
         bekwaamheid
         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

De ENV APT_KEY_DONT_WARN_ON_DANGEROUSE_USAGE is nodig voor apt-key adv die niet verstikt omdat hij niet vanaf een terminal wordt uitgevoerd.

Om de Crystal repository toe te voegen, moet de sleutel geïnstalleerd zijn

W: GPG-fout: https://dist.crystal-lang.org/apt kristal InRelease: De volgende handtekeningen konden niet geverifieerd worden omdat de publieke sleutel niet beschikbaar is: NO_PUBKEY 09617FD37CC06B54
E: De opslagplaatshttps://dist.crystal-lang.org/apt kristal InRelease' is niet getekend.

Als je de sleutel toevoegt met een Dockerfile, kan je de volgende foutmelding krijgen:

Uitvoeren: /tmp/apt-key-gpghome.daecBAEPSJ/gpg.1.sh -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54
gpg: keyserver ontvangst mislukt: Kan gevraagde adres niet toewijzen

Dit komt doordat gpg zich niet kan binden aan een IPv6 adres. Daarom moet u

schakel IPv6 ondersteuning in op uw host voor Docker:

bewerken / maken /etc/docker/daemon.json

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

En herstart de docker service:

service docker herstart


de vaste-cidr-v6 is NIET optioneel als https://docs.docker.com/config/daemon/ipv6/ je zou kunnen doen geloven.

test voor IPv6 ondersteuning:

docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
als het niets oplevert, dan is ipv6 NIET ingeschakeld
sample-uitvoer met IPv6 ingeschakeld:

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
        valid_lft forever preferred_lft forever
     inet6 fe80::42:acff:fe11:2/64 scope link tentative
        valid_lft forever preferred_lft forever
2001:db8:1::/64 dev eth0 metric 256
fe80::/64 dev eth0 metric 256
default via 2001:db8:1::1 dev eth0 metric 1024
ff00::/8 dev eth0 metric 256



Mislukt om Docker Application Container Engine te starten.

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="Uw kernel ondersteunt geen swap geheugenlimiet"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770617796+01:00″ level=warning msg="Uw kernel biedt geen ondersteuning voor cgroup rt period"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770656361+01:00″ level=warning msg="Uw kernel biedt geen ondersteuning voor 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) is toegewezen met een IP adres 172.17.0.0/16. Daemon optie -bip kan worden gebruikt om een voorkeurs IP adres in te stellen"

Jan 11 21:39:40 morpheus dockerd[697]: Fout bij het starten van de daemon: Fout bij het initialiseren van de netwerkcontroller: Fout bij het aanmaken van het standaard "bridge" netwerk: kon geen beschikbare, niet-overlappende IPv6 adrespool vinden onder de standaardwaarden om aan het netwerk toe te wijzen

Als de docker daemon niet start, kijk dan in /var/log/syslog om de reden te vinden.

Hier betekent het waarschijnlijk dat u de fixed-cidr-v6 niet heeft toegevoegd zoals aangegeven door mij hierboven! Docker, sinds een paar versies, lijkt dit te vereisen. Er is een issue in GitHub hierover.

en dit allemaal voor...

Referenties

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