Installare Crystal su Docker: come aggiungere il repository Crystal a Docker nel Dockerfile

Dockerfile (estratto)

ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
Eseguire apt-get update && apt-get install -y \
         software-proprietà-comune \
         costruire-essenziale \
         libevent-dev -
         libssl-dev \
         libxml2-dev \
         libyaml-dev \
         libgmp-dev -
         libreadline-dev -
         apt-trasporto-https \
         iputils-ping \
         git \
         attitudine \automatica \automatica
         nano ■
         openssh-server \
         && apt-key adv -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54 \
         && add-apt-repository 'deb https://dist.crystal-lang.org/apt cristallo principale".
         && apt-get update \
         && apt-get install -y crystal \
         && rm -rf /var/lib/apt/lists/* \
         && mkdir /root/.ssh

Il ENV APT_KEY_DONT_WARN_ON_DANGEROUSE_USAGE è necessario per apt-key adv non soffocare per non essere eseguito da un terminale.

Per aggiungere il repository Crystal, la chiave deve essere installata

W: errore GPG: https://dist.crystal-lang.org/apt cristallo InRelease: Le seguenti firme non possono essere verificate perché la chiave pubblica non è disponibile: NO_PUBKEY 09617FD37CC06B54
E: il deposito 'https://dist.crystal-lang.org/apt crystal InRelease' non è firmato.

Quando si aggiunge la chiave usando un Dockerfile, si potrebbe ottenere il seguente messaggio di errore:

Esecuzione: /tmp/apt-key-gpghome.daecBAEPSJ/gpg.1.sh -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54
gpg: ricezione keyserver fallita: Impossibile assegnare l'indirizzo richiesto

Questo è dovuto al fatto che gpg non è in grado di legarsi a un indirizzo IPv6. Perciò dovete

abilitare il supporto IPv6 sul vostro host per Docker:

modificare / creare /etc/docker/daemon.json

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

E riavviare il servizio docker:

servizio docker restart


il fisso-cidr-v6 è NON opzionale come https://docs.docker.com/config/daemon/ipv6/ potrebbe farvi credere.

test per il supporto IPv6:

docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
se non restituisce nulla, allora ipv6 NON è abilitato.
esempio di output con IPv6 abilitato:

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



Fallito l'avvio di Docker Application Container Engine.

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="Il tuo kernel non supporta il limite di memoria swap"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770617796+01:00″ level=warning msg="Il tuo kernel non supporta cgroup rt period"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770656361+01:00″ level=warning msg="Il tuo kernel non supporta cgroup rt runtime"

Jan 11 21:39:40 morpheus dockerd[697]: time="2019-01-11T21:39:40.800355314+01:00″ level=info msg="Il bridge predefinito (docker0) è assegnato con un indirizzo IP 172.17.0.0/16. L'opzione del demone -bip può essere usata per impostare un indirizzo IP preferito"

11 gen 21:39:40 morpheus dockerd[697]: Errore nell'avviare il demone: Error initializing network controller: Errore nella creazione della rete "bridge" predefinita: impossibile trovare un pool di indirizzi IPv6 disponibile e non sovrapposto tra quelli predefiniti da assegnare alla rete

Se il demone docker non parte, guarda in /var/log/syslog per trovare la ragione.

Qui probabilmente significa che non avete aggiunto il fixed-cidr-v6 come indicato da me sopra! Docker, da un paio di versioni, sembra richiedere questo. C'è un problema in GitHub su di esso.

e tutto questo per ...

immagine

Riferimenti

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