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/