docker

Escalando Docker para prestar servicio a millones de desarrolladores más: salida de red

En la Parte 1 de este blog, profundizamos en el análisis de todas las imágenes almacenadas en Docker Hub, el registro de contenedores más grande del mundo. Hicimos esto para brindarle una mejor comprensión de cómo nuestras nuevas actualizaciones de los Términos de servicio afectarán a los equipos de desarrollo que usan Docker Hub para administrar sus imágenes de contenedor y canalizaciones de CI / CD.

La parte 2 de esta publicación de blog profundiza en los límites de velocidad para las extracciones de imágenes de contenedores. Esto también se anunció como parte de nuestras comunicaciones actualizadas de los Términos de servicio (ToS) de Docker. Detallamos los siguientes límites de tasa de extracción para los planes de suscripción de Docker que entrarán en vigencia el 1 de noviembre de 2020: Plan gratuito – usuarios anónimos: 100 extracciones cada 6 horas Plan gratuito – usuarios autenticados: 200 extracciones por 6 horas Plan Pro – ilimitado Plan de equipo – ilimitado.

Docker define los límites de la tasa de extracción como la cantidad de solicitudes de manifiesto a Docker Hub. Los límites de frecuencia para las extracciones de imágenes de Docker se basan en el tipo de cuenta del usuario que solicita la imagen, no en el tipo de cuenta del propietario de la imagen. Para los usuarios anónimos (no autenticados), las tasas de extracción están limitadas según la dirección IP individual.

Recibimos preguntas de los clientes y de la comunidad sobre las capas de imágenes de contenedores. No contamos las capas de imágenes como parte de los límites de la tasa de atracción. Debido a que estamos limitando las solicitudes de manifiesto, la cantidad de capas (solicitudes de blob) relacionadas con una extracción es ilimitada en este momento. Este es un cambio basado en los comentarios de la comunidad para que sea más fácil de usar, por lo que los usuarios no necesitan contar capas en cada imagen que pueden estar usando.

Una mirada más profunda a las tasas de extracción de Docker Hub

Para determinar por qué eran necesarios los límites de velocidad y cómo aplicarlos, dedicamos un tiempo considerable a analizar las descargas de imágenes de Docker Hub. Lo que encontramos confirmó que la gran mayoría de los usuarios de Docker extrajeron imágenes a una velocidad que cabría esperar para los flujos de trabajo normales. Sin embargo, existe un impacto enorme por parte de una pequeña cantidad de usuarios anónimos. Por ejemplo, aproximadamente el 30% de todas las descargas en Hub provienen de solo el 1% de nuestros usuarios anónimos.

Los nuevos límites de extracción se basan en este análisis, de modo que la mayoría de nuestros usuarios no se verán afectados. Estos límites están diseñados para adaptarse a los casos de uso normales de los desarrolladores: aprendizaje de Docker, desarrollo de código, creación de imágenes, etc.

Ayudar a los desarrolladores a comprender los límites de la tasa de extracción Ahora que entendimos el impacto y dónde deberían aterrizar los límites, necesitábamos definir a nivel técnico cómo deberían funcionar estos límites. Limitar las extracciones de imágenes a un registro de Docker es complicado. No encontrará una API de extracción en la especificación del registro, no existe. De hecho, una extracción de imagen es en realidad una combinación de solicitudes de API de manifiesto y blob, y estas se realizan en diferentes patrones según el estado del cliente y la imagen en cuestión.

Por ejemplo, si ya tiene la imagen, el cliente de Docker Engine emitirá una solicitud de manifiesto, se dará cuenta de que tiene todas las capas referenciadas según el manifiesto devuelto y se detendrá. Por otro lado, si extrae una imagen que admite varias arquitecturas, se emitirá una solicitud de manifiesto y devolverá una lista de manifiestos de imagen para cada arquitectura compatible. Luego, Docker Engine emitirá otra solicitud de manifiesto específica para la arquitectura en la que se está ejecutando y recibirá una lista de todas las capas de esa imagen. Finalmente, solicitará cada capa (blob) que falte.

Entonces, una extracción de imagen es en realidad una o dos solicitudes de manifiesto, y de cero a infinitas solicitudes de blob (capa). Históricamente, Docker supervisaba los límites de velocidad basados ​​en blobs (capas). Esto se debió a que un blob se correlacionó más estrechamente con el uso de ancho de banda. Sin embargo, escuchamos los comentarios de la comunidad de que esto es difícil de rastrear, conduce a una experiencia inconsistente dependiendo de cuántas capas tenga la imagen que está extrayendo, desalienta las buenas prácticas de Dockerfile y no es intuitivo para los usuarios que solo quieren obtener cosas. hecho sin ser expertos en imágenes y registros de Docker.

Como tal, estamos limitando la tasa en función de las solicitudes de manifiesto en el futuro. Esto tiene la ventaja de estar acoplado más directamente con un tirón, por lo que es fácil de entender para los usuarios. Hay una pequeña compensación: si extrae una imagen que ya tiene, esta aún se cuenta incluso si no descarga las capas. En general, esperamos que este método de limitación de velocidad sea justo y fácil de usar.

Agradecemos sus comentarios Supervisaremos y ajustaremos estos límites a lo largo del tiempo en función de casos de uso comunes para asegurarnos de que los límites sean apropiados para cada nivel de usuario y, en particular, que nunca bloquearemos a los desarrolladores para que no hagan su trabajo. Estén atentos en las próximas semanas para ver una publicación de blog sobre la configuración de CI y sistemas de producción a la luz de estos cambios. Finalmente, como parte del compromiso de Docker con la comunidad de código abierto, antes del 1 de noviembre anunciaremos la disponibilidad de nuevos planes de código abierto. Para solicitar un plan de código abierto, complete el breve formulario aquí. Para obtener más información sobre los cambios recientes en los términos de servicio, consulte las preguntas frecuentes.

Para los usuarios que necesitan límites de extracción de imágenes más altos, Docker también ofrece extracción de imágenes ilimitada como una característica de los planes Pro y Team. Visite www.docker.com/pricing para ver los planes disponibles. Como siempre, agradecemos sus preguntas y comentarios en pricingquestions@docker.com.

Fuente: docker.com

Deja un comentario