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...

afbeelding

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