• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

587
Views
Imágenes de Docker: tipos. Slim vs slim-stretch vs stretch vs alpine

Estoy buscando recoger una imagen acoplable para crear una aplicación Java y ver las variantes de las imágenes OpenJDK disponibles. Estoy buscando aquí https://github.com/docker-library/openjdk/tree/master/8/jdk y veo alpine, slim y windows. ¿Cuáles son las diferencias entre estos y qué da cada variante?

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Elija una imagen base de la ventana acoplable que se ajuste a sus necesidades y tenga en cuenta que el tamaño de la imagen también es un aspecto importante .

La imagen se puede considerar como un conjunto de instrucciones sobre cómo crear el contenedor. En Docker, una imagen podría heredarse de otra imagen (o basarse en ella), agregando instrucciones adicionales además de las básicas. Cada imagen consta de múltiples capas, que son efectivamente inmutables.

Lea el artículo Elaboración del flujo de compilación perfecto de Java Docker .

El tamaño de la imagen de Docker es realmente muy importante. El tamaño tiene un impacto en:

  • latencia de red : necesidad de transferir la imagen de Docker a través de la web
  • almacenamiento : necesita almacenar todos estos bits en algún lugar
  • disponibilidad y elasticidad del servicio : cuando se usa un programador Docker, como Kubernetes, Swarm, Nomad, DC/OS u otro (el programador puede mover contenedores entre hosts)
  • seguridad : ¿realmente, quiero decir, realmente necesita el paquete libpng con todas sus vulnerabilidades CVE para su aplicación Java?
  • agilidad de desarrollo : imágenes pequeñas de Docker == tiempo de compilación más rápido e implementación más rápida


Para ejecutar una aplicación Java, necesita al menos JRE. Por ejemplo, para un proyecto de primavera, su imagen puede basarse en slim Alpine Linux with OpenJDK JRE :

 #simple dockerFile for java app: #here we are using Base Alpine Linux based image with OpenJDK JRE only #For Java 8, try this FROM openjdk:8-jre-alpine #For Java 11, try this #FROM adoptopenjdk/openjdk11:alpine-jre #copy application WAR/JAR (with libraries inside) COPY target/spring-boot-*.war/jar yourName.war/jar # specify default command CMD ["/usr/bin/java", "-jar", "/yourName.war/jar"]

También puede usar el historial de la docker history yourImageName para ver todas las capas (y su tamaño) que forman su imagen.

over 3 years ago · Santiago Trujillo Report

0

Según los documentos de la biblioteca docker (cita y enlaces a continuación), aquí hay un resumen:

  • openjdk:<version>

La imagen de facto. Úselo si no está seguro.

  • openjdk:<version>-buster , openjdk:<version>-stretch y openjdk:<version>-jessie

buster , jessie o stretch son los nombres en clave de la suite para las versiones de Debian e indican en qué versión se basa la imagen.

  • openjdk:<version>-alpine

Del mismo modo, esta imagen se basa en Alpine Linux , por lo que es una imagen base muy pequeña. Se recomienda que si necesita un tamaño de imagen sea lo más pequeño posible. La advertencia es que usa algunas librerías inusuales, pero no debería ser un problema para la mayoría del software. En caso de duda, consulte los documentos oficiales a continuación.

  • openjdk:<version> (desde 12 en adelante), openjdk:<version>-oracle y openjdk:<version>-oraclelinux7

A partir de openjdk:12 la imagen predeterminada, así como las variantes -oracle y -oraclelinux7 , se basan en la imagen oficial de Oracle Linux 7 . Los archivos binarios de OpenJDK en la imagen predeterminada, así como las variantes -oracle y -oraclelinux7 , están creados por Oracle y provienen de la comunidad OpenJDK .

  • openjdk:<version>-slim

Esta imagen solo contiene los paquetes mínimos necesarios para ejecutar Java (y faltan muchas de las bibliotecas de Java relacionadas con la interfaz de usuario, por ejemplo). A menos que esté trabajando en un entorno en el que solo se implementará la imagen openjdk y tenga limitaciones de espacio, se recomienda la imagen predeterminada sobre esta.

  • openjdk:<version>-windowsservercore

Esta imagen se basa en Windows Server Core ( microsoft/windowsservercore ) .



Documentos completos (la versión que se muestra a continuación aquí , la última versión aquí ):

Variantes de imagen

Las imágenes de openjdk vienen en muchos sabores, cada uno diseñado para un caso de uso específico.

openjdk:<version>

Esta es la imagen de facto. Si no está seguro de cuáles son sus necesidades, probablemente quiera usar esta. Está diseñado para usarse tanto como un contenedor desechable (monte su código fuente e inicie el contenedor para iniciar su aplicación), así como la base para construir otras imágenes.

Algunas de estas etiquetas pueden tener nombres como jessie o stretch. Estos son los nombres en clave de la suite para las versiones de Debian e indican en qué versión se basa la imagen.

openjdk:<version>-alpine

Esta imagen se basa en el popular proyecto Alpine Linux , disponible en la imagen oficial de alpine . Alpine Linux es mucho más pequeño que la mayoría de las imágenes base de distribución (~5 MB) y, por lo tanto, conduce a imágenes mucho más delgadas en general.

Esta variante es muy recomendable cuando se desea que el tamaño final de la imagen sea lo más pequeño posible. La advertencia principal a tener en cuenta es que usa musl libc en lugar de glibc y amigos , por lo que cierto software puede tener problemas dependiendo de la profundidad de sus requisitos de libc. Sin embargo, la mayoría del software no tiene problemas con esto, por lo que esta variante suele ser una opción muy segura. Consulte este hilo de comentarios de Hacker News para obtener más información sobre los problemas que pueden surgir y algunas comparaciones de pros y contras del uso de imágenes basadas en Alpine.

Para minimizar el tamaño de la imagen, es poco común que se incluyan herramientas adicionales relacionadas (como git o bash ) en las imágenes basadas en Alpine. Usando esta imagen como base, agregue las cosas que necesita en su propio Dockerfile (consulte la descripción de la imagen alpine para ver ejemplos de cómo instalar paquetes si no está familiarizado).

openjdk:<version>-windowsservercore

Esta imagen se basa en Windows Server Core ( microsoft/windowsservercore ) . Como tal, solo funciona en lugares en los que funciona esa imagen, como Windows 10 Professional/Enterprise (Anniversary Edition) o Windows Server 2016.

Para obtener información sobre cómo ejecutar Docker en Windows, consulte la guía "Inicio rápido" correspondiente proporcionada por Microsoft:

  • Inicio rápido de Windows Server
  • Inicio rápido de Windows 10

openjdk:<version>-slim

Esta imagen instala el paquete -headless de OpenJDK y, por lo tanto, faltan muchas de las bibliotecas de Java relacionadas con la interfaz de usuario y algunos paquetes comunes contenidos en la etiqueta predeterminada. Solo contiene los paquetes mínimos necesarios para ejecutar Java. A menos que esté trabajando en un entorno en el que solo se implementará la imagen de openjdk y tenga limitaciones de espacio, le recomendamos que utilice la imagen predeterminada de este repositorio.

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error