Empaqueta la exposición

DockerBeginner
Practicar Ahora

Introducción

Marsh House va a enviar Along the waterline, River edition 1, a un quiosco receptor que no puede acceder a un registro de imágenes. La exposición tiene un servicio web, una API de registros y un directorio de archivos de colección. Prepara una carpeta que contenga todo lo necesario para ejecutar esta versión exacta en otro lugar.

Debes conocer los conceptos básicos de construcción y ejecución de Docker, los puertos publicados y las rutas de terminal. Este laboratorio enseña el pequeño archivo Compose, los archivos de imágenes y la recopilación portátil de archivos. No necesitas programar ni conocer museos. Docker y las dos imágenes de la aplicación están preparados. Los registros y las ilustraciones esquemáticas originales son materiales didácticos ficticios.

Usa Workstation para los comandos y Source Exhibition para el ejemplo funcional. Receiving Exhibition comienza vacía; usarás ese límite de entrega en el siguiente laboratorio independiente. El resultado de este laboratorio es un paquete completo, no un receptor en ejecución. Calcula unos 45 minutos, incluidos la lectura y los errores habituales; es una estimación del autor.

Identifica la exposición completa

En este paso, identificarás qué debe conservarse en la entrega y guardarás su pareja exacta de imágenes. Empieza en Source Exhibition. La página muestra cuatro objetos. Abre Pocket compass, inspecciona su ilustración e historia y selecciona Download field sheet. Esto descarga un registro de texto real con una edición, un ID de objeto y una descripción. Usa Back to collection, abre Crossing ledger y descarga también esa ficha. Son objetos distintos con sus propios registros y archivos.

La colección enlaza cada objeto con su propia página de detalles y descarga de ficha:

Los cuatro objetos de la exposición de origen

Cambia a Workstation. Comienza en /home/labex/project/exhibition-release. pwd muestra la carpeta actual, ls enumera su contenido y cd vuelve aquí si te desplazas a otro lugar:

cd /home/labex/project/exhibition-release
ls

compose.yaml describe los dos servicios en ejecución. release.json identifica esta edición y los ID inmutables de imágenes detrás de sus etiquetas. collection/ contiene los registros JSON publicados, las ilustraciones SVG originales y las descargas de texto. author-notes/ contiene borradores no publicados y debe quedar fuera del paquete. Conserva sin cambios todos los materiales proporcionados y los servicios de origen en ejecución.

cat muestra un archivo de texto. Lee el registro de la versión:

cat release.json

Busca las entradas web y api. Sus etiquetas son field-notes/web:pack y field-notes/api:pack; cada una también tiene un ID de imagen que comienza por sha256:. Una etiqueta es un nombre que puede cambiar de destino. El ID identifica este contenido concreto de imagen. Entrega juntas las entradas de la versión; una imagen web funcional por sí sola no puede proporcionar los registros ni los archivos.

mkdir crea un directorio; -p crea los directorios superiores que falten y acepta un directorio existente. Si packet ya existe por un intento tuyo anterior, inspecciónalo con ls packet y sigue completándolo; no elimines carpetas fuente proporcionadas.

mkdir -p packet

--context default selecciona explícitamente el Engine de origen. Un contexto da nombre a una conexión a un daemon Docker; no es una segunda máquina física. docker image save escribe la configuración, las etiquetas y las capas del sistema de archivos de las imágenes. -o nombra el archivo de salida. Incluye ambas etiquetas de la versión en este único archivo:

docker --context default image save -o packet/images.tar field-notes/web:pack field-notes/api:pack

Puede tardar un momento y normalmente no imprime nada cuando tiene éxito. docker container export es distinto: exporta el sistema de archivos de un contenedor, omite los metadatos de imagen y no recopila archivos de montajes enlazados. No puede sustituir esta entrega de imágenes.

Comprende las relaciones entre los archivos de ejecución

En este paso, relacionarás el archivo Compose con la exposición que acabas de usar y copiarás su configuración portátil. Empieza en Workstation y muéstralo:

cat compose.yaml

YAML usa la sangría para expresar relaciones. services: contiene gallery y records. Cada image: selecciona una imagen preparada; este archivo no contiene una receta de construcción. gallery sirve las páginas del navegador y solicita su colección a records, la API que lee los materiales publicados.

Ambos servicios usan network_mode: host: comparten el espacio de nombres de red del host de su Engine. Aquí el servicio web escucha en el puerto 9100 y su API en el 9101. El Engine de origen usa la red de Workstation. El Engine receptor se ejecuta en su propio espacio de nombres de red de contenedor aislado, por lo que esos mismos números allí no apuntan al origen. Es una configuración didáctica local deliberadamente pequeña, no una receta general de seguridad de red.

API_ORIGIN es una variable de entorno, un valor con nombre que se pasa al programa de la galería. Su http://127.0.0.1:9101 apunta a la API en ese mismo espacio de nombres. records.volumes enlaza ./collection con /collection en modo de solo lectura, indicado por :ro. La ruta ./ es relativa al directorio del proyecto Compose, junto a compose.yaml. Es una dependencia externa de ejecución: las imágenes no la contienen.

Pide a Compose que analice el archivo sin iniciar ni cambiar servicios:

docker --context default compose config

--context default selecciona explícitamente el Engine de origen preparado; un contexto es una conexión con nombre a un daemon Docker, no un segundo equipo físico. La salida expande la ruta relativa de la colección a la carpeta fuente absoluta actual. Conserva la ruta relativa del archivo original para la entrega: copiar esa ruta fuente expandida en el paquete seguiría dependiendo de la antigua ubicación en Workstation.

Ahora está claro el conjunto completo: el contenido de dos imágenes, una configuración Compose y toda la colección publicada. No se necesitan el compilador, el directorio de construcción fuente, los borradores ni los contenedores de origen en ejecución para iniciar la edición recibida.

cp copia un archivo; -r copia recursivamente un directorio y sus elementos. Copia la configuración portátil original y la colección publicada:

cp compose.yaml packet/compose.yaml

Reúne un paquete portátil

En este paso, completarás el paquete con su colección publicada y lo inspeccionarás como una entrega que se puede trasladar. Empieza en Workstation. Crea la carpeta de colección del paquete y copia recursivamente el contenido del directorio fuente. /. significa su contenido, por lo que repetir este comando no anida otro directorio de colección:

mkdir -p packet/collection
cp -r collection/. packet/collection/

Inspecciona el resultado:

ls packet
ls packet/collection
cat packet/compose.yaml

El nivel superior contiene exactamente compose.yaml, images.tar y collection. La colección contiene exhibits.json, art/ y download/. El montaje Compose sigue comenzando por ./collection, nunca por la ruta absoluta del origen. No copies author-notes ni release.json en el paquete de ejecución: este último es la evidencia de selección del lado del origen.

La existencia de un archivo o el gran tamaño de un archivo de imágenes no demuestran que esté completo. La comprobación carga tus dos imágenes guardadas en un almacén independiente desechable y ejecuta allí el paquete, sin red, montajes del origen, descarga ni construcción. Lee todos los registros, las ilustraciones y los bytes descargados y después elimina sus recursos aislados de prueba. No inicia ni altera tu exposición receptora real.

Si la comprobación indica que falta una imagen, vuelve a leer release.json y repite el mismo comando de guardado con ambas etiquetas. Si falta un archivo de colección, compara las dos salidas de ls y copia correctamente el directorio publicado. Si una ruta es incorrecta, restaura packet/compose.yaml desde el archivo portátil proporcionado. Mantén aquí el paquete para este laboratorio; el siguiente comienza con sus propios archivos independientes.

Resumen

Identificaste todos los componentes de ejecución de una aplicación de dos servicios, guardaste su pareja exacta de imágenes y reuniste su colección externa junto a un archivo Compose portátil. El paquete puede iniciarse en un almacén de imágenes independiente sin tomar prestado el directorio fuente. Las capas de imágenes eran solo una parte de esa entrega.