¿Cómo publicar imágenes de Docker creadas para diferentes arquitecturas en Docker HUB?

¿Cómo publicar imágenes de Docker creadas para diferentes arquitecturas en Docker HUB?

Tengo un contenedor que está construido encima dedebian:jessie(Hay algo de compilación de openssl y algunas cosas personalizadas). quiero que mi imagen sealanzableen diferentes arquitecturas, por ejemplo en sistemas operativos x86_64 "normales" pero también en arquitecturas basadas en ARM como RaspberryPI.

Descubrí que cuando construyo la imagen en x86_64 y la publico en HUB, no funciona cuando se extrae en un dispositivo ARM y viceversa. Intentar hacerlo da como resultado algunos errores de "no se pueden encontrar algunas bibliotecas" o "comandos no reconocidos".

La pregunta es: ¿cómo crear y publicar mi imagen para que esté disponible para otras arquitecturas (y, lo que es importante, cómo decirle a Docker que seleccione automáticamente la apropiada al descargar)?

Puedo ver esolos contenedores de Debian "han sido portados" a diferentes arquitecturaspero no puedo encontrar ninguna información sobre cómo lograr esto para mi imagen.

Respuesta1

Las imágenes de múltiples arcos en la ventana acoplable se encuentran en desarrollo activo. La pieza clave de esto es un docker manifestcli que esaún en desarrollo en este PR.

Primero debe crear sus imágenes para diferentes arquitecturas, que siempre puede ejecutar directamente en el sistema de arquitectura apropiado. Una imagen de múltiples arcos es una "lista de manifiesto" que apuntará a estas imágenes. Luego, el cliente de Docker extraerá la imagen apropiada de esa lista cuando extraiga la imagen de múltiples arcos.

Hasta que el PR anterior esté integrado en Docker, puede usar elherramienta de manifiestoque le permite definir la lista de manifiesto y enviarla al servidor de registro. Esto permite un archivo yaml de entrada como el siguiente ejemplo:

image: myprivreg:5000/someimage:latest
manifests:
  -
    image: myprivreg:5000/someimage:ppc64le
    platform:
      architecture: ppc64le
      os: linux
  -
    image: myprivreg:5000/someimage:amd64
    platform:
      architecture: amd64
      features:
        - sse
      os: linux

Luego ejecuta lo siguiente para tomar el archivo yaml anterior y convertirlo en una lista de manifiesto que se envía al registro definido:

./manifest-tool push from-spec someimage.yaml

Respuesta2

  1. Construya su imagen contra la imagen de la arquitectura relevante.
    • por ejemplo: arm32v7/debian:jessieen lugar dedebian:jessie
  2. Etiquétalo como otra cosa.
    • p.ej: fracz/fooapp:arm32-latest, fracz/fooapp:raspi-latest,fracz/fooapp:grandma-use-this-one
  3. Quien quiera publicar su imagen es responsable de seleccionar la etiqueta adecuada.
    • Aunque probablemente quieras incluir información relevante en tus documentos/léames/etc.

información relacionada