Catálogo de series relacionadas con el tutorial de uso de Docker
Tabla de contenido
La lógica de trabajo de la producción de imágenes de Docker
La estructura básica de Dockerfile
Ejemplo de formato de Dockerfile:
Aprendimos antes que las imágenes de Docker están todas definidas oficialmente. ¿Podemos crear imágenes nosotros mismos?
Que es dockerfile
- Dockerfile es equivalente a un documento y los clientes pueden generar nuevos contenedores basados en dockerfile
- Dockerfile es el archivo fuente utilizado para crear la imagen y es la instrucción en el proceso de construcción del contenedor.
- Docker puede leer la especificación de dockerfile para crear contenedores automáticamente y crear imágenes basadas en dockerfile
- Cada instrucción crea una capa de espejo, es decir, las imágenes de espejo se superponen en múltiples capas, por lo tanto, cuantas más capas, menor es la eficiencia y menos capas para crear un espejo, mejor. Por lo tanto, las acciones que se pueden completar en una instrucción están definidas por una instrucción tanto como sea posible.
Vernáculo: un archivo llamado Dockerfile, que contiene los puntos necesarios del Dockerfile, y luego se convierte en un espejo después de construirlo.
La lógica de trabajo de la producción de imágenes de Docker
- En primer lugar, debe tener un directorio para la creación de reflejo y hay un archivo en el directorio.
- El nombre debe ser Dockerfile, Dockerfile tiene un formato especificado
- Esta es una convención en la ventana acoplable. Si ha utilizado un archivo MAKE en lenguaje C, debe saberlo. Son todas convenciones de los lenguajes de programación. Nombre fijo, escrito en el código del programa de la ventana acoplable.
- Si lo nombra usted mismo: docker build -t test -f dockerfile.
- El signo # comienza con un comentario. La designación está representada por letras mayúsculas por defecto para distinguir comandos y parámetros.
- La compilación de Docker lee el Dockerfile para leer la configuración en el Dockerfile en orden, y la primera instrucción sin comentarios debe comenzar con FROM, lo que indica en qué imagen base se basa para compilar la nueva imagen. Puede crear una nueva imagen basada en cualquier imagen existente.
La estructura básica de Dockerfile
Dockerfile generalmente se divide en cuatro partes:
- Información básica de la imagen
- Información del mantenedor
- Instrucciones de funcionamiento del espejo
- La instrucción
接下来详细介绍
'#' que se ejecuta cuando se inicia el contenedor es un comentario en el Dockerfile.
Docker ejecuta las instrucciones del Dockerfile en orden de arriba hacia abajo. Para especificar la imagen base, la primera instrucción debe ser FROM. Una declaración que comience con el carácter # se considera un comentario. Puede usar RUN, CMD, FROM, EXPOSE, ENV y otras instrucciones en los archivos Docker.
vim Dockerfile
Ejemplo de formato de Dockerfile:
El orden de ejecución es de arriba a abajo, a su vez
instrucción | descripción |
---|---|
DESDE | La construcción de una nueva escena se basa en esa imagen reflejada |
MANTENIMIENTO | Nombre o dirección de correo electrónico del encargado del espejo |
ETIQUETA | Agrega información al espejo. |
CORRER | Comandos de Shell para ejecutar al construir la imagen |
AGREGAR | Agregar archivos locales al contenedor |
COPIAR | Copie archivos o directorios a la escena |
ENV | Establecer variables de entorno |
USUARIO | Especifique el usuario que ejecuta para los comandos de ejecución RUN, CMD y ENTRYPOINT |
ARG | Los parámetros que se deben pasar al comenzar desde el exterior, cuando se inicia el contenedor, use -build-arg para pasar los parámetros |
EXPONER | Declarar el puerto de servicio del contenedor en ejecución |
CHEQUEO DE SALUD | Verificación del estado del servicio en el contenedor |
VOLUMEN | Se usa para especificar el directorio persistente |
WORKDIR | Configure el directorio de trabajo para RUN, CMD, ENTRYPOINT, COPY y ADD |
PUNTO DE ENTRADA | Ejecutar cuando el contenedor se está ejecutando, si hay varios comandos ENTRYPOINT, el último entrará en vigencia |
CMD | Ejecutar al ejecutar el contenedor, si hay varios comandos CMD, el último entrará en vigencia |
Crear imagen
docker build es un comando de docker que se usa para crear un espejo usando Dockerfile.
El método Build necesita escribir un archivo de configuración y luego usar la imagen existente actualmente para ajustar de acuerdo al archivo de configuración para generar una nueva imagen.
Formato de parámetro:
docker build [OPTIONS] PATH |URL| -[flags]
Options:
-t, --tag list # 镜像名称
-f, --fire string # 指定 Dockerfile文件位置
# Options 其他参数 docker build --help
Options:
--add-host list Add a custom host-to-IP mapping (host:ip)
# 添加自定义主机到ip的映射(主机:ip)
--build-arg list Set build-time variables
# 设置构建时变量
--cache-from strings Images to consider as cache sources
# 要考虑作为缓存源的图像
--cgroup-parent string Optional parent cgroup for the container
# 容器的可选父cgroup
--compress Compress the build context using gzip
# 使用gzip压缩构建上下文
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
# 限制CPU CFS(完全公平调度程序)周期
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
# 限制CPU CFS(完全公平调度程序)配额
-c, --cpu-shares int CPU shares (relative weight)
# CPU份额(相对权重)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
# 允许执行的cpu (0- 3,0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
# 允许执行的MEMs (0- 3,0,1)
--disable-content-trust Skip image verification (default true)
# 跳过图像验证(默认为真)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
# Dockerfile的名称(默认为‘PATH/Dockerfile’)
--force-rm Always remove intermediate containers
# 总是移除中间容器
--iidfile string Write the image ID to the file
# 将图像ID写入文件
--isolation string Container isolation technology
# 容器隔离技术
--label list Set metadata for an image
# 设置图像的元数据
-m, --memory bytes Memory limit
# 存储容量极限 / 内存限制
--memory-swap bytes Swap limit equal to memory plus swap: '-1' to enable unlimited swap
# 交换限制等于内存加交换:'-1'以启用无限交换
--network string Set the networking mode for the RUN instructions during build (default "default")
# 在构建期间为运行指令设置连网模式(默认为“default”)
--no-cache Do not use cache when building the image
# 在构建映像时不使用缓存
--pull Always attempt to pull a newer version of the image
# 总是尝试拉一个较新的版本的图像
-q, --quiet Suppress the build output and print image ID on success
# 如果成功,则禁止生成输出并打印图像ID
--rm Remove intermediate containers after a successful build (default true)
# 成功构建后删除中间容器(默认为true)
--security-opt strings Security options
# 安全选项
--shm-size bytes Size of /dev/shm
# 大小 /dev/shm
-t, --tag list Name and optionally a tag in the 'name:tag' format
# 名称和“Name:tag”格式的标记(可选)
--target string Set the target build stage to build.
# 设置要构建的目标构建阶段。
--ulimit ulimit Ulimit options (default [])
# Ulimit选项(默认[])