Colección de citas famosas - Slogan de motivación - descripción y escritura de docker-compose.yml

descripción y escritura de docker-compose.yml

Los archivos de plantilla son el núcleo del uso de Compose e implican muchas palabras clave de instrucción. La mayoría de las instrucciones tienen significados similares a los parámetros relacionados con la ejecución de Docker.

El nombre del archivo de plantilla predeterminado es docker-compose.yml y el formato es YAML.

Puedes nombrar el archivo Compose como quieras para que tenga sentido lógicamente; docker-compose.yml es solo el nombre estándar. Simplemente podemos nombrar este archivo docker-stack.yml o algo más específico para el proyecto.

Tenga en cuenta que cada servicio debe construirse automáticamente especificando la imagen a través de la directiva image o la directiva build (se requiere Dockerfile). etc. Generar una imagen.

En la pila de Docker, no se puede usar el comando de compilación, solo la imagen.

Si se usa el comando de compilación, las opciones establecidas en Dockerfile (por ejemplo: CMD, EXPOSE, VOLUME , ENV, etc.) se obtendrá automáticamente y no es necesario configurarlo nuevamente en docker-compose.yml.

Tenga en cuenta que el archivo Redactar está configurado en la versión:"3". Básicamente, esto lo hace compatible con el modo enjambre. Podemos usar la clave de implementación (solo disponible con la versión 3.x y superior del formato de archivo Compose) y sus subopciones para equilibrar la carga y optimizar el rendimiento por servicio (por ejemplo, web). Podemos ejecutar este archivo usando el comando Docker Stack Implement (solo se admite en la versión 3.x y superior del archivo Compose). Puede usar docker-compose up para ejecutar archivos de la versión 3 con una configuración que no sea de enjambre.

Especifique la ruta a la carpeta donde se encuentra el Dockerfile (puede ser una ruta absoluta o una ruta relativa al archivo docker-compose.yml). Compose usará esto para construir automáticamente la imagen y luego usará la imagen.

También puedes utilizar la directiva de contexto para especificar la ruta a la carpeta donde se encuentra el Dockerfile.

Utilice la directiva dockerfile para especificar el nombre del archivo Dockerfile.

Utilice la directiva arg para especificar variables al crear la imagen.

Utilice cache_from para especificar el caché para crear la imagen.

Especifique la asignación de capacidad del kernel del contenedor.

Para permitir que el contenedor tenga todas las capacidades, puede especificarlo como:

Para eliminar la capacidad NET_ADMIN, puede especificarlo como:

Anular la comando predeterminado ejecutado después de que se inicia el contenedor.

Solo para el modo Swarm

Especificar el cgroup principal significa que se heredarán los límites de recursos del grupo.

Por ejemplo, se crea un cgroup llamado cgroups_1.

Especifique el nombre del contenedor. De forma predeterminada, se utilizará el formato nombre del proyecto_nombre del servicio_número de serie.

Solo se usa en modo Swarm.

Especifica la relación de mapeo del dispositivo.

Resuelve el problema de las dependencias de los contenedores y la secuencia de inicio. En el siguiente ejemplo, primero se iniciará redis``db y luego se iniciará el servidor DNS personalizado web

. Puede ser un valor o una lista.

Configurar dominios de búsqueda DNS. Puede ser un valor o una lista.

Montar un sistema de archivos tmpfs en el contenedor.

Obtiene variables de entorno de un archivo, que puede ser una ruta de archivo separada o una lista.

Si el archivo de plantilla de Compose se especifica mediante docker-compose -f FILE, la ruta de la variable en env_file se basará en la ruta del archivo de plantilla.

Si el nombre de una variable entra en conflicto con la directiva de entorno, por convención, esta última tiene prioridad.

Cada línea del archivo de variables de entorno debe ajustarse al formato y se admiten líneas de comentarios que comiencen con #.

Establecer variables de entorno. Puede utilizar formato de matriz o de diccionario.

Las variables con solo nombres de pila obtendrán automáticamente el valor de la variable correspondiente en el host que ejecuta Compose, lo que puede usarse para evitar fugas de datos innecesarias.

Si se utilizan verdadero|falso, sí|no y otras palabras que expresan un significado booleano en nombres o valores de variables, es mejor ponerlas entre comillas para evitar que YAML analice automáticamente ciertos contenidos en la semántica booleana correspondiente. . Estas palabras específicas incluyen

y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON off| |Off|OFF

Expone el puerto, pero no lo asigna al host y solo es accesible a través del servicio conectado.

Solo se pueden especificar puertos internos como parámetros.

De manera similar al parámetro --add-host en Docker, se especifica información adicional de asignación de nombres de host.

Las siguientes dos entradas se agregarán al archivo /etc/hosts en el contenedor del servicio después del inicio.

Utilice comandos para comprobar si el contenedor se está ejecutando correctamente.

Especificado como nombre de imagen o ID de imagen. Si la imagen no existe localmente, Compose intentará extraerla.

Agrega información de metadatos de Docker al contenedor. Por ejemplo, puede agregar información de descripción auxiliar al contenedor.

Configurar las opciones de registro.

Actualmente se admiten tres tipos de controladores de registro:

opciones Configure los parámetros relevantes del controlador de registro:

Establezca el modo de red. Utilice el mismo valor que el parámetro --network de Docker Run.

Configurar la red a la que está conectado el contenedor.

Compartir el espacio de nombres del proceso con el sistema host. Los contenedores con esta opción activada, así como los contenedores y el sistema host, pueden acceder y operar entre sí a través de ID de proceso.

Exponer información del puerto.

Utilice el formato puerto del host:puerto del contenedor (HOST:CONTENEDOR), o simplemente especifique el puerto del contenedor (el host seleccionará el puerto aleatoriamente).

Almacena datos confidenciales como contraseñas del servicio mysql.

Especifique los atributos predeterminados (usuario, rol, tipo, nivel, etc.) del mecanismo de etiqueta de la plantilla del contenedor. Por ejemplo, configure el nombre de usuario y el nombre de función de la etiqueta.

Establece otra señal para detener el contenedor. De forma predeterminada, SIGTERM se utiliza para detener el contenedor.

Configurar los parámetros del kernel del contenedor.

Especifique el valor límite ulimits del contenedor.

Por ejemplo, especifique el número máximo de procesos como 65535 y especifique el número de identificadores de archivos como 20000 (límite flexible, la aplicación puede modificarlo en cualquier momento y no puede exceder el límite estricto) y 40000. (límite estricto del sistema, que solo puede ser aumentado por el usuario root).

Configuración de la ruta en la que se monta el volumen de datos. Puede configurar la ruta del host (HOST:CONTAINER) o agregar el modo de acceso (HOST:CONTAINER:ro).

La ruta en esta directiva admite rutas relativas.

Además, hay instrucciones que incluyen nombre de dominio, punto de entrada, nombre de host, ipc, dirección_mac, privilegios, solo lectura, tamaño_shm, reinicio, stdin_open, tty, usuario, directorio_de_trabajo, etc., que son básicamente las mismas que las Funciones de los parámetros correspondientes en Docker Run.

Especifique el archivo de entrada que se ejecutará después de que se inicie el contenedor de servicios.

Especifique el nombre de usuario de la aplicación que se ejecuta en el contenedor.

Especifique el directorio de trabajo en el contenedor.

Busca el nombre de dominio, nombre de host, dirección mac, etc. en el contenedor especificado.

Permitir que algunos comandos privilegiados se ejecuten en el contenedor.

Especifique la política de reinicio después de que el contenedor salga para reiniciar siempre. Este comando es muy eficaz para mantener el servicio siempre ejecutándose. En un entorno de producción, se recomienda configurarlo como siempre o a menos que se detenga.

Montar el sistema de archivos raíz del contenedor en modo de solo lectura significa que el contenido del contenedor no se puede modificar.

Abre entrada estándar, que puede aceptar entradas externas.

Simula un pseudo terminal.

El archivo de plantilla Compose admite la lectura dinámica de las variables de entorno del sistema del host y las variables en el archivo .env en el directorio actual.

Por ejemplo, el siguiente archivo Compose leerá el valor de la variable ${MONGO_VERSION} del entorno en el que se ejecuta y lo escribirá en la instrucción ejecutada.

Si ejecuta MONGO_VERSION=3.2 docker-compose up, se iniciará un contenedor con la imagen mongo:3.2; si ejecuta MONGO_VERSION=2.8 docker-compose up, se iniciará un contenedor con la imagen mongo:2.8; ser iniciado.

Si existe un archivo .env en el directorio actual, las variables se leerán del archivo cuando se ejecute el comando docker-compose.

Cree un nuevo archivo .env en el directorio actual y escriba el siguiente contenido.

Al ejecutar docker-compose up se iniciará un contenedor de imágenes mongo:3.6.