Construcción de imágenes de Docker-Dockerfile (teoría)

1. Capas de imágenes de Docker

1.FROM  后面跟基础镜像
2.ADD run.sh/  脚本
3.VOLUME  挂载共享空间  数据卷
4.CMD ["./run,sh"]  命令执行脚本
  • Cada instrucción en el Dockerfile crea una nueva capa de imagen
  • La capa de espejo se almacenará en caché y se reutilizará
  • Cuando se modifican las instrucciones del Dockerfile, se cambian los archivos copiados o las variables especificadas cuando se construye el espejo son diferentes, la caché de la capa de espejo correspondiente dejará de ser válida
  • Después de que una determinada capa de caché de duplicación no sea válida, la caché de la capa de duplicación no será válida
  • La capa de la imagen es inmutable. Si agrega un archivo a una capa y luego lo elimina en la siguiente capa, la imagen aún contendrá el archivo.

2. Cree en función del contenedor de imágenes existente

1.docker create -it 原镜像名 /bin/bash

2.docker commit -m “new” -a “chen” 已有容器id 新镜像名:标签
 -m:说明信息
 -a:作者信息
 -p:生成过程中停止容器的运行

docker images | grep 标签

Tres, crear según la plantilla local

1.导入本地镜像debian-7.0-x86-minimal.tar.gz

2.cat debian-7.0-x86-minimal.tar.gz | docker import - 镜像名:标签

3.docker images | grep 标签

Cuarto, crea basado en Dockerfile

  • Dockerfile es un archivo compuesto por un conjunto de instrucciones
  • La estructura del dockerfile se divide en cuatro partes:
    información básica de la imagen,
    información del mantenedor,
    instrucciones de operación de la imagen
    e instrucciones de ejecución cuando se inicia el contenedor
  • Dockerfile admite una instrucción por línea, cada instrucción puede contener varios parámetros y admite el uso de comentarios que comiencen con "#"

1.Instrucciones de funcionamiento de Dockerfile

instrucción sentido
DESDE el espejo Para especificar la imagen en la que se basa la nueva imagen, la primera instrucción debe ser la instrucción FROM y se requiere una instrucción FROM para cada imagen creada.
Nombre del MAINTAINER Describe la información del mantenedor de la nueva imagen.
Comando RUN Ejecute el comando en el espejo basado en él y envíelo al nuevo espejo
CMD ["programa a ejecutar", "parámetro 1", "parámetro 2"] El comando o script que se ejecutará cuando la instrucción inicie el contenedor, el Dockerfile solo puede tener un comando CMD, si se especifican varios, solo se puede ejecutar el último
EXPONER número de puerto Especifique el puerto que se abrirá cuando se cargue la nueva imagen en Docker (EXPOSE expone el puerto interno del contenedor, que debe asignarse a un puerto externo)
Valor de la variable de la variable de entorno ENV Establezca el valor de una variable de entorno, que RUN utilizará más adelante
AÑADIR archivo / directorio de origen archivo / directorio de destino Copie el archivo de origen en el archivo de destino (la diferencia con COPY es descomprimir el archivo tar local en el espejo)
COPIAR archivo de origen / directorio archivo / directorio de destino Copie el archivo / directorio en el host local a la ubicación de destino, el archivo / directorio de origen debe estar en el mismo directorio que Dockerfile
VOLUME ["Directorio"] Cree un punto de montaje en el contenedor (VOLUME es un directorio en el host que está montado en el contenedor)
USUARIO nombre de usuario / UID Especificar el usuario al ejecutar el contenedor
Ruta WORKDIR Especifique el directorio de trabajo para el siguiente RUN, CMD y ENTRYPOINT (WORKDIR es similar a cd, pero solo cambia el directorio una vez, y el comando RUN posterior puede escribir la ruta relativa)
Comando ONBUILD Especifique el comando que se ejecutará cuando la imagen generada se utilice como imagen base
CHEQUEO DE SALUD Examen de salud
  • La diferencia entre CMD y ENTRYPOINT

  • La instrucción CMD puede especificar el comando que se ejecutará de forma predeterminada cuando se inicie el contenedor, pero los parámetros del comando docker run pueden anularlo.

  • La instrucción ENTRYPOINT es similar a la CMD. También es un comando que se ejecutará cuando el usuario especifica el contenedor para iniciar, pero si también hay una instrucción CMD en el dockerfile, los parámetros en la CMD se agregarán a la instrucción ENTRYPOINT . Si el comando docker run lleva un parámetro en este momento, este parámetro anulará el parámetro de la instrucción CMD y también se agregará a la instrucción ENTRYPOINT.

  • De esta forma, cuando se inicia el contenedor, se ejecutará la parte del parámetro de la instrucción ENTRYPOINT.

  • Puede verse que la instrucción ENTRYPOINT tiene una prioridad más alta.

  • Prioridad: ENTRYPOINT> CMD> Docker ejecutar

  • Para los directorios, los comandos COPY y ADD tienen las mismas características :
    solo copiar el contenido del directorio sin incluir el directorio en sí. La
    diferencia
    COPY es solo copiar
    ADD: el objeto de copiar, descomprimir y manipular no es solo un archivo, sino también una URL

Supongo que te gusta

Origin blog.csdn.net/weixin_45647891/article/details/114917166
Recomendado
Clasificación