Docker en Raspbian?

24

¿Cómo haría para ejecutar Docker ( https://www.docker.io ) en Raspbian?

Las instrucciones que he encontrado son un proceso muy manual basado en Raspbian pero con un núcleo muy antiguo que parecía requerir un montón de parches. También está la compilación conocida por la gente resin.io, pero está hecha específicamente para Arch Linux.

El núcleo actual de Raspbian es 3.10.25, que es lo suficientemente moderno como para tener la mayoría de las cosas que necesita Docker. No estoy por encima de construir un nuevo kernel, pero ¿sigue siendo necesario?

¿Alguien ha descubierto cómo hacer que Docker y sus requisitos se apliquen al Pi?

Martijn Heemels
fuente
Interesante pregunta. También me interesará una respuesta a esto. ¿Has probado esas instrucciones?
Jivings
1
No, he leído todo lo que pude encontrar. Estoy buscando específicamente usar Raspbian, por lo que las instrucciones de Arch no fueron muy útiles. Las instrucciones de Raspbian de Ken Cochrane parecen muy antiguas, ya que requieren muchos pasos para incluso actualizar Raspbian, y mucho menos Docker, y ni siquiera dar como resultado una configuración funcional. Esperaba reunir información antes de pasar un montón de tiempo en ella.
Martijn Heemels
1
Una de las que me he dado cuenta es que los contenedores Docker no son realmente de arquitectura cruzada. Como los contenedores comparten el núcleo con el sistema operativo host, las aplicaciones dentro de los contenedores están vinculadas a la arquitectura armv6. No puede compilar una imagen acoplable en x86 y ejecutarla en armv6, lo que pone limitaciones a su sistema de compilación. Hay una imagen base disponible aquí: index.docker.io/u/resin/rpi-raspbian
Martijn Heemels
Entonces, ¿es posible pero no hacer lo que quieres?
Jivings
1
Bueno, parece que su reclamo se self-sufficient container that will run virtually anywhereestá quedando corto. Parece que para que se ejecute en algo, Docker debe ser compatible con el dispositivo en el que se ejecuta. Parece Monoo Javason más prometedores, pero no es realmente lo que necesita. ¿Por qué necesitas esto en el Pi de alguna manera? Si desarrolla para Linux, realmente debería desarrollar lo que admite de forma nativa.
Piotr Kula

Respuestas:

14

Sí, he creado un kernel y he portado Docker 1.0 al sistema operativo Raspbian: Linux raspberrypi 3.10.37+ # 1 PREEMPT sáb abr 19 13:28:05 UTC 2014 armv6l GNU / Linux

He compartido mis resultados en GitHub para salvar a otros del dolor. Como es habitual, he proporcionado este 'tal cual' sin garantía ;-)

Puede encontrar el archivo tar del kernel y docker aquí:

https://github.com/stevef1uk/docker_for_rpi

Seahope
fuente
1
Eso es muy interesante. Gracias por compartir. ¿Te importaría agregar los pasos para compilar el núcleo? En particular, ¿qué opciones cambiaste en la configuración? Estoy a punto de intentar construir mi propio núcleo a través de los pasos enumerados en elinux.org/RPi_Kernel_Compilation .
Martijn Heemels
3
En realidad, ya lo he hecho, así como también cómo hacer una compilación cruzada. Puede encontrar mis blogs aquí: stevef1uk.blogspot.com/2014/06/… & stevef1uk.blogspot.com/2014/06/…
Seahope
7

También puede usar HypriotOS, que proporciona el último núcleo de Docker y Linux para Raspberry Pi. ¡Simplemente muestre la imagen y vea a Docker funcionando!

http://blog.hypriot.com/

(divulgación: soy un miembro del equipo de Hypriot)

Mathias Renner
fuente
Gracias, usando su nueva imagen en mi nuevo Pi2. ¡Funciona genial! Lo he probado con una variedad de imágenes armhf de Docker Hub.
Martijn Heemels
1
@MathiasRenner, ¿hay alguna razón por la que hypriot no sea de código abierto? ¿Estás planeando monetizar la imagen?
jottr
1
@jottr ¡Gracias por tu interés! En realidad, todo lo que necesita de Hypriot para ejecutar Docker en RPI es de código abierto. Necesita (1) un núcleo adecuado (github.com/hypriot/rpi-kernel-builder) y (2) el binario Docker (github.com/hypriot/rpi-docker-builder). ¡Simplemente construya e instale ambos y ya está listo!
Mathias Renner
@MathiasRenner ah genial! Gracias por los punteros.
jottr
Esto también funciona muy bien en Raspbian Jessie; blog.hypriot.com/post/your-number-one-source-for-docker-on-arm
Arjan
3

Si usa Raspbian:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install docker.io docker

Docker ahora está en el repositorio predeterminado,

Actualización : desafortunadamente, esta versión es bastante antigua, por lo que extraer imágenes de Docker Hub no funcionará en este momento.

Janghou
fuente
La versión en el repositorio predeterminado es súper antigua, 1.3.3 a partir de este comentario. Ya no funciona con el registro de docker, lo que lo hace prácticamente inútil.
DriverDan
Convenido. Esperemos que el paquete en Raspbian se actualice pronto, tal vez una solicitud de error / función ayude
Janghou
Hay 1.8.3 (octubre de 2015) en el repositorio de pruebas de Raspbian.
nphx
Ver blog.hypriot.com/post/your-number-one-source-for-docker-on-arm para Docker 1.10 en Raspbian Jessie.
Arjan
3

Docker admite ARMv6 / v7 e incluso ARM64 (v8?), Por lo que puede ejecutarlo en su Raspberry Pis.

Siga las instrucciones oficiales de Docker aquí: https://docs.docker.com/engine/installation/linux/docker-ce/debian/

Si tiene Raspbian Jessie o Stretch (consulte la documentación anterior para otros), esto sería:

$ sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
$ curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
$ echo "deb [arch=armhf] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
     $(lsb_release -cs) stable" | \
     sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update; sudo apt-get install docker-ce
$ sudo systemctl start docker

Luego puede probarlo (gracias al soporte multiarch de Docker):

$ sudo docker run --rm hello-world

Para evitar escribir sudoen cada invocación de Docker, puede realizar los siguientes pasos adicionales: https://docs.docker.com/engine/installation/linux/linux-postinstall/

¡Disfrutar!

PD: He instalado Ubuntu Server 16.04 para armhf. Luego he seguido estas instrucciones (para Ubuntu) para instalar Docker en él: https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository . Funciona como un encanto también.

Huygens
fuente
2

Siempre he usado ...

curl -sSL https://get.docker.com | sh && sudo usermod -aG docker pi

Sin embargo, acabo de ver un aviso de desaprobación esta mañana ...

WARNING: raspbian is no longer updated @ https://get.docker.com/
         Installing the legacy docker-engine package...
Zak
fuente
Acabo de notar esto también: ¿sabes lo que significa? ¿Cuáles son las implicaciones de esto?
davidA
Significa que funciona hoy, pero probablemente no funcionará mañana. También significa que debe escribir al proyecto moby (es decir, las personas que mantienen el acoplador), decirles lo increíble que es y rogarles que sigan manteniéndolo. : D
Zak
¿Sabes si hay una alternativa? Presumiblemente, ¿siempre podría recurrir al proceso de instalación manual en Raspbian?
davidA
No, no lo se. Sin embargo, el Proyecto Moby debería poder responder esa pregunta.
Zak
Gracias, me estoy acercando. Odiaría ver a Docker desaparecer del raspbian: ejecutar microservicios a través de Docker en un RPi es increíble ...
davidA