Instalar Crystal en Docker: cómo añadir el repositorio de Crystal a Docker en el Dockerfile
Dockerfile (extracto)
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=No avisar
Ejecutar apt-get update && apt-get install -y \N -
software-properties-common \ ~ -
construir-esencial \ ~ -
libevent-dev \N - en inglés
libssl-dev \N - en inglés
libxml2-dev \ ~ -
libyaml-dev \N - en inglés
libgmp-dev \ ~ -
libreadline-dev \N - para los que no tienen acceso a la información.
apt-transport-https \N - apt-transport-https
iputils-ping \N - para la búsqueda de información
git \ ~ - git \ ~ -
aptitud \ ~ -
nano \N - en el caso de la industria de la construcción.
openssh-servidor \ ~ -
&& apt-key adv -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54 \N -y
&& add-apt-repository 'deb https://dist.crystal-lang.org/apt cristal principal' \ ~ -
&& apt-get update \N -
&& apt-get install -y crystal \N - y
&& rm -rf /var/lib/apt/lists/* \N - rm -rf
&& mkdir /root/.ssh
El ENV APT_KEY_DONT_WARN_ON_DANGEROUSE_USAGE es necesario para que apt-key adv no se ahogue al no ser ejecutado desde una terminal.
Para añadir el repositorio Crystal, es necesario instalar la clave
W: Error de GPG: https://dist.crystal-lang.org/apt cristal InRelease: Las siguientes firmas no han podido ser verificadas porque la clave pública no está disponible: NO_PUBKEY 09617FD37CC06B54
E: El repositorio 'https://dist.crystal-lang.org/apt crystal InRelease' no está firmado.
Cuando añada la llave utilizando un Dockerfile, puede que reciba el siguiente mensaje de error:
Ejecutando: /tmp/apt-key-gpghome.daecBAEPSJ/gpg.1.sh -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54
gpg: la recepción del servidor de claves ha fallado: No se puede asignar la dirección solicitada
Esto se debe a que gpg no puede enlazar con una dirección IPv6. Por lo tanto, tiene que
habilitar el soporte de IPv6 en su host para Docker:
editar / crear /etc/docker/daemon.json
{ "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }
Y reinicie el servicio Docker:
servicio docker restart
el fixed-cidr-v6 es NO opcional como https://docs.docker.com/config/daemon/ipv6/ podría hacerles creer.
prueba de compatibilidad con IPv6:
docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
si no devuelve nada, entonces ipv6 NO está habilitado
muestra de salida con IPv6 activado:
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 tentativo
valid_lft forever preferred_lft forever
2001:db8:1::/64 dev eth0 métrica 256
fe80::/64 dev eth0 metric 256
default via 2001:db8:1::1 dev eth0 metric 1024
ff00::/8 dev eth0 métrica 256
No se ha podido iniciar el motor de contenedores de aplicaciones Docker.
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="Su kernel no soporta el límite de memoria swap"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770617796+01:00″ level=warning msg="Su kernel no soporta cgroup rt period"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770656361+01:00″ level=warning msg="Su kernel no soporta cgroup rt runtime"
Jan 11 21:39:40 morpheus dockerd[697]: time="2019-01-11T21:39:40.800355314+01:00″ level=info msg="El puente por defecto (docker0) está asignado con una dirección IP 172.17.0.0/16. La opción -bip del demonio se puede utilizar para establecer una dirección IP preferida"
11 de enero 21:39:40 morpheus dockerd[697]: Error al iniciar el demonio: Error al inicializar el controlador de red: Error al crear la red "puente" por defecto: no se ha podido encontrar un conjunto de direcciones IPv6 disponibles y no solapadas entre las predeterminadas para asignar a la red
Si el demonio Docker no se inicia, mira en /var/log/syslog para encontrar la razón.
Aquí probablemente significa que no ha añadido el fixed-cidr-v6 como he indicado más arriba. Docker, desde hace un par de versiones, parece requerir esto. Hay un tema en GitHub al respecto.
y todo esto por ...
Referencias
https://github.com/inversepath/usbarmory-debian-base_image/issues/9
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/ipv6/