- Dockerfile_docker_compose
- 16370
|
Diferencias entre dockerfile y docker-compose Lo primero que debes saber sobre docker es que se divide en construcción de imágenes y lanzamiento de contenedores.
Construcción de imágenes: Creación de una imagen que contiene el entorno, el código del programa, etc. necesario para instalarlo y ejecutarlo. Este proceso se realiza mediante un dockerfile.
Lanzamiento del contenedor: Los contenedores se ejecutan finalmente extrayendo la imagen construida e iniciando el servicio a través de una serie de comandos de ejecución (por ejemplo, mapeo de puertos, montajes de datos externos, variables de entorno, etc.). Para un único contenedor, esto se puede ejecutar a través de docker run.
Para varios contenedores (por ejemplo, la orquestación de servicios), puede utilizar docker-compose, que facilita la ejecución de varios contenedores como un servicio (o sólo uno de ellos), y proporciona la capacidad de escalar el servicio.
Un breve resumen:
1. dockerfile: construye la imagen;
2. docker run: arranca el contenedor;
3. docker-compose: inicia el servicio;
Empecemos por el principio. Si no usas docker, ¿cómo construyes wordpress? Primero encuentra un servidor, asumiendo que su SO es Ubuntu, y luego sigue la documentación paso a paso para ejecutar comandos y escribir configuraciones, ¿verdad? ¿Qué pasa con el uso de Docker? Sólo tienes que encontrar un servidor, no importa qué sistema operativo, siempre y cuando soporte docker, docker ejecutar ubuntu, docker sacará la última imagen de Ubuntu de la fuente oficial, se puede pensar en ello como abrir una máquina virtual de Ubuntu, y luego paso a paso para instalarlo, lo mismo que arriba.
Sin embargo, hay un inconveniente importante para instalar de esta manera: una vez que el contenedor se elimina, todo el trabajo que has hecho se pierde. Por supuesto, puedes usar docker commit para guardarlo como imagen, y así poder reutilizarlo.
Pero las réplicas son generalmente bastante grandes, y si sólo las compartes, la gente no sabe lo que contienen, por lo que estos problemas no son propicios para compartir y reutilizar. Una solución intuitiva es escribir un script para grabar el proceso de instalación, de modo que cuando vuelvas a instalarlo, sólo tengas que ejecutar el script. Dockerfile es un script de este tipo, que registra el proceso de creación de una imagen. Con Dockerfile, puedes crear una imagen ejecutando docker build . Puedes crear una imagen ejecutando docker build . Dockerfile es sólo un archivo de texto, por lo que es fácil modificarlo.
Ahora que tienes una imagen de wordpress, todo lo que necesitas hacer es ejecutar docker para poner wordpress en marcha.
Si fuera sólo wordpress, eso sería suficiente. Pero en muchos casos, se necesitan varias réplicas para iniciar un servicio, como nginx en el frontend, mysql en la base de datos, servicios de correo, etc Por supuesto, usted puede conseguir todos estos en una sola réplica, pero no es reutilizable. Más comúnmente, nginx, mysql, smtp son cada espejo, y luego estos espejos trabajan juntos para servir a un proyecto. docker-compose resuelve este problema. La información sobre qué réplicas necesitas para tu proyecto, cómo configurar cada una, qué volúmenes montar, etc. está contenida en docker-compose.yml. Para iniciar un servicio, basta con docker-compose up, y para detenerlo, basta con docker-compose stop/down.
En resumen, Dockerfile registra la compilación de una sola imagen, y docker-compse.yml registra la compilación de un proyecto (normalmente varias imágenes).
Dijiste que algunos tutoriales usan dockerfile+docker-compose, porque docker-compose.yml no tiene información sobre la construcción de imágenes. Si una imagen se extrae del registro docker, entonces Dockerfile no es necesario; si una imagen necesita ser construida, entonces necesitas proporcionar el archivo Dockerfile.
docker-compose es para orquestar contenedores. Por ejemplo, tienes una imagen php, una imagen mysql, y una imagen nginx. Si no tienes docker-compose, entonces cada vez que arrancas, tienes que tocar los parámetros de arranque de cada contenedor, variables de entorno, nomenclatura de contenedores, especificar parámetros de enlace para diferentes contenedores, y así sucesivamente, una serie de operaciones, que es bastante tedioso. Pero con docker-composer, puedes escribir estos comandos en el archivo docker-composer.yml, y luego cada vez que inicies todo el entorno (incluyendo tres contenedores), sólo tienes que golpear un comando docker-composer up.
El dockerfile sirve para construir la imagen desde cero. Contiene el entorno, el código del programa, etc. necesarios para instalarla y ejecutarla. Esto se hace utilizando un dockerfile. dockerfile - preparado para que el comando docker build cree una imagen independiente, que también se puede utilizar para live builds en docker-compose docker-compose.yml - un script para docker-compose que te permite gestionar múltiples contenedores al mismo tiempo, incluyendo la relación entre ellos, si usar la imagen oficial o construirla tú mismo, la definición de varios puertos de red, la definición del espacio de almacenamiento, etc. |
Anterior: Failed to register URL "http://xx/" for site "SITE NAME"...下一篇:docker在 windows系统下存储镜像位置
|