¿Cómo implementar una image de Docker autoconstruida para realizar cambios en sí misma con respecto al entorno local?

Como una recapitulación rápida, Docker sirve como una forma de escribir cambios de código o file de configuration para un service web específico, entorno de ejecución, máquinas virtuales, todo desde los confines de un file de terminal / text de Linux. Las imágenes de Docker son puntos de guardado de capas de código que se crean a partir de files docker o se pueden crear a partir de contenedores que requieren una image base para que se activen de todos modos para crear. Los files Dockerfiles sirven como una forma de automatizar el process de creación de imágenes ejecutando todos los commands y acciones deseados para que se generen nuevos contenedores y los distribuyan en un solo file.

Ahora esto es genial y todo, pero quiero llevar esto un paso más allá. Crear imágenes, especialmente aquellas con dependencies, son engorrosas porque 1, tienes que depender de commands que no están dentro de la image del sistema operativo pnetworkingeterminada, o 2, tienen muchos otros commands inútiles que no son necesarios.

Ahora, en mi cabeza, siento que es posible, pero todavía no puedo establecer la connection. Mi deseo es get un file Docker para build desde cero (Literalmente, la image de cero) y buildlo de acuerdo con esto. Es para copyr cualquier dependencia que se desee, como un rpm o algo así, instalarlo, encontrar su command de inicio y transmitir todas las dependencies necesarias para crear y ejecutar correctamente la image sin errores en el file acoplable. En un sentido de progtwigción,

FROM scratch COPY package.rpm RUN *desinetworking cmds* 

Los errores de ejecución se devuelven a un file. el file busca el sistema operativo actual para las dependencies necesarias y las devuelve al cmd EJECUTADO.

 CMD *service start up* 

En cuanto a esa CMD, ejecutaremos el service, obtendremos su estado y lo filtraremos nuevamente a sus commands de inicio en la parte de CMD.

El problema aquí es que no creo que pueda usar Docker para estos fines. Para hacer una compilation portuaria de algo, retener sus errores y volver a filtrarla en la compilation parece un desafío. Me gustaría que Docker pudiera venir equipado con esto, ya que parecería que mi única posibilidad de realizar una tarea así sería a través de un script que causara esgulps en el factor de portabilidad.

¿Algunas ideas?

Docker no te va a ofrecer construcciones indoloras. Docker no sabe lo que quieres.

Usted tiene varias opciones aquí:

Un simple ejemplo:

 web: build: . volumes: - "app:/src/app" ports: - "3030:3000" 

Para usarlo:

docker-compose up

La composition de Docker será entonces:

  1. Llamar al contenedor web
  2. comstackr usando el directory de trabajo actual como root
  3. Monte el directory de app en /src/app en el contenedor
  4. Exponer el puerto del contenedor 3030 como 3000 al mundo exterior.

Tenga en count que build también puede apuntar a un contenedor Docker que encontró a través de Kitematic (que se lee en registry.hub.docker.com) para que pueda replace el . (en el ejemplo anterior en la línea de compilation) con node:latest y buildá un contenedor NodeJS.

Docker Compose es muy similar a la línea de command del acoplador. Puede usar https://lorry.io/ para get ayuda en la generación de los files docker-compose.yml.

  • Si está buscando una solución épica, le recomendaría algo como Mesosphere para un entorno empresarial Docker.

También hay otras soluciones que podría considerar como Kubernetes de Google y Apache Mesos, pero la curva de aprendizaje boostá.

También noté que estabas robando con IP's y aunque no lo he usado, por lo que he escuchado, Weave simplifica enormemente el aspecto de networking de Docker, que definitivamente no es el punto fuerte de Docker.

Suena más como un sistema de aprovisionamiento a la ansible, chef o marioneta para mí. Sé que algunos los usan para crear imágenes si tienes que quedarte en el país de los docker.