¿Qué imagen base de Docker se debe usar para instalar Aplicaciones en un contenedor sin ningún sistema operativo adicional?


Estoy ejecutando un demonio Docker en mi SO INVITADO que es CentOS. Quiero instalar servicios de software además de eso de manera aislada y no necesito otra imagen del sistema operativo dentro de mi contenedor Docker.

Quiero tener un contenedor Docker con solo los binarios y bibliotecas adicionales para la aplicación de software que voy a instalar.

¿Hay una imagen base "whiteglove/blank" en Docker que pueda usar ? Quiero un recipiente muy delgado que utiliza como punto de partida lo que mi GUEST OS tiene para ofrecer. Es eso posible ?

 22
Author: gextra, 2014-03-01

3 answers

Lo que estás pidiendo no es posible fuera de la caja con Docker. Cada imagen de Docker tiene su propio sistema de archivos raíz, que necesita tener algún tipo de sistema operativo instalado.

Sus opciones son:

  1. Utilice una imagen base mínima , como la imagen BusyBox. Esto le dará el mínimo absoluto que necesita para tener un contenedor funcionando.

  2. Use la imagen base de CentOS, en cuyo caso su contenedor se ejecutará el mismo o sistema operativo muy similar.

La razón por la que las imágenes de Docker son así es porque están destinadas a ser portátiles. Cualquier imagen de Docker está destinada a ejecutarse en cualquier lugar en el que se esté ejecutando Docker, independientemente del sistema operativo. Esto significa que la imagen de Docker debe contener un sistema de archivos raíz completo y una instalación del sistema operativo.

Lo que puede hacer si necesita cosas del sistema operativo host es compartir un directorio utilizando volúmenes Docker. Sin embargo, esto generalmente está destinado a ser utilizado para el montaje de datos y todavía necesita que la imagen de Docker tenga un sistema operativo.


Dicho esto, si tiene un binario enlazado estáticamente que no tiene absolutamente ninguna dependencia, se vuelve fácil crear una imagen muy mínima. Esto se llama un "microcontainer", y Go en particular es muy adecuado para producir estos. Aquí está algunas lecturas adicionales sobre microcontainers y cómo producirlos.


Otra opción que podría buscar si todo lo que desea es la administración de recursos parte de los contenedores es usando lxc-execute, como se describe en esta respuesta. Pero usted pierde en todas las otras características de Docker agradable también. Desafortunadamente, lo que está tratando de hacer no es para lo que Docker está construido.

 26
Author: Rohan Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:26

De las mejores prácticas de Docker :

Siempre que sea posible, utilice los Repositorios Oficiales actuales como base para su imagen. Recomendamos la imagen de Debian ya que está muy controlada y se mantiene extremadamente mínima (actualmente por debajo de 100 mb), sin dejar de ser una distribución completa.

Lo que está pidiendo está completamente en contra de la idea de usar contenedores Docker. No quieres que tenga ninguna fiabilidad en tu sistema operativo INVITADO. Si haces tu Docker no ser portátil.

Cuando crea un contenedor, desea que se ejecute en cualquier máquina que ejecute Docker. Ya sea CentoOS, Ubuntu, Mac o Microsoft Azure:)

Idealmente, no hay ventajas de que su sistema operativo contenedor base tenga que hacer nada con su sistema operativo Host.

 5
Author: Reza S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-02 01:30:01

Para cualquier contenedor, necesita tener al menos un sistema de archivos raíz. Es por eso que necesita usar una imagen base que tenga el sistema de archivos raíz. Su idea no está completamente en contra del paradigma de uso del contenedor; a diferencia de las máquinas virtuales, queremos que el contenedor sea mínimo sin muchos elementos repetitivos que pueda aprovechar del sistema operativo subyacente.

 1
Author: Henaras Khazaei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-28 21:44:53