[Docker] Comandos y operaciones básicas de Dockerfile

[Docker] Comandos y operaciones básicas de Dockerfile

1. Comandos reservados de Dockerfile

palabra reservada efecto
DE ¿En qué espejo se basa el espejo actual?
CORRER Instrucciones que deben ejecutarse al crear una imagen
EXPONER El número de puerto expuesto por el contenedor actual
DIR.TRABAJO Especifique el directorio de trabajo donde el terminal inicia sesión de forma predeterminada después de que se crea el contenedor, un punto de apoyo
ENV Se utiliza para establecer variables de entorno durante la creación de imágenes.
AGREGAR Copie los archivos en el directorio del host en el espejo y el comando AÑADIR procesará automáticamente la URL y descomprimirá el paquete tar.
COPIAR Similar a AGREGAR, copiar archivos y comandos al espejo
copiará el archivo/directorio desde la <ruta original> en el directorio de contexto de compilación a la ubicación <ruta de destino> en el espejo de la nueva capa
VOLUMEN Volúmenes de datos de contenedor para almacenamiento y persistencia de datos
CMD Especifique el comando que se ejecutará cuando se inicie un contenedor.
Puede haber varios comandos CMD en el Dockerfile, pero solo el último tiene efecto. CMD será reemplazado por los parámetros después de la ejecución de Docker.
PUNTO DE ENTRADA El propósito de especificar el comando ENTRYPOINT para que se ejecute cuando se inicia un contenedor es el mismo que el de CMD, que es especificar el iniciador del contenedor y sus parámetros.

1.1 Desde el mando

La imagen basada en la cual se crea la imagen extraerá automáticamente la imagen base desde la que se construye docker hub, y From debe aparecer como la primera instrucción del Dockerfile.

La sintaxis es la siguiente:

FROM <image>
FROM <IMAGE>[:<tag>]	//使用版本不写则为latest
FROM <image>[@<digest>]	//使用摘要

1.2 Comando EJECUTAR

El comando EJECUTAR ejecutará comandos arbitrarios en una nueva capa sobre la imagen actual y confirmará los resultados. La imagen confirmada resultante se usará en el siguiente paso en el Dockerfile.

La sintaxis es la siguiente:

RUN <command> (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows)
RUN ["executable", "param1", "param2"] (exec form)

RUN /bin/bash -c 'source $HOME/.bashrc && echo $HOME'
RUN ["/bin/bash", "-c", "echo hello"]

1.3 Comando EXPONER

Se usa para especificar el puerto expuesto al mundo exterior cuando la imagen construida se ejecuta como un contenedor.

La sintaxis es la siguiente:

EXPOSE 80/tcp	#如果没有显示指定则默认暴露都是tcp
EXPOSE 80/udp

1.4 Comando CMD

Se utiliza para especificar el comando que se ejecutará para el contenedor iniciado. Solo puede haber un CMDcomando en el Dockerfile . Si aparece más de un comando, solo el último comando tiene efecto.

La sintaxis es la siguiente:

CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)

ejemplo:

  • CMD java -jar a.jar
  • CMD ["java", "-jar", "a.jar"] (recomendado)

1.5 Comando PUNTO DE ENTRADA

Especifique un comando para ejecutar cuando se inicia un contenedor. El propósito de ENTRYPOINT es el mismo que el de CMD. Es especificar el iniciador del contenedor y sus parámetros.

La sintaxis es la siguiente:

ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2

1.6 Comando WORKDIR

Se utiliza para configurar el directorio de trabajo para cualquier instrucción EJECUTAR, CMD, ENTRYPOINT, COPY y ADD en el Dockerfile. Si WORKDIR no existe, se creará incluso si no se usa en ninguna instrucción posterior de Dockerfile.

La sintaxis es la siguiente:

#使用绝对路径
WORKDIR /path/to/workdir

#先使用绝对路径,再使用相对路径
WORKDIR /a
WORKDIR b
WORKDIR c
# /a/b/c
RUN pwd

ENV DIRPATH=/path
WORKDIR $DIRPATH/$DIRNAME
RUN pwd

1.7 Comando ENV

Utilizado para establecer variables de entorno para crear imágenes, este valor aparecerá en el entorno de todas las instrucciones posteriores en la fase de creación.

La sintaxis es la siguiente:

ENV <key> <value>
ENV <key>=<value>

1.8 comando AÑADIR

Se utiliza para copiar nuevos archivos, directorios o direcciones URL de archivos remotos del contexto y agregarlos al sistema de archivos reflejado en la ruta especificada.

La sintaxis es la siguiente:

ADD hom* /mydir/
ADD hom?.txt /mydir/
ADD test.txt relativeDir/
ADD test.txt /absoluteDir/

ADD url

1.9 Comando COPIAR

Se utiliza para copiar el archivo especificado en el directorio de contexto (contexto) al directorio especificado de la imagen.

La sintaxis es la siguiente:

COPY hom* /mydir/
COPY hom?.txt /mydir/
COPY test.txt relativeDir/
COPY test.txt /absoluteDir/

2. Experiencia práctica

2.1 ¿Cuál es la diferencia entre AGREGAR y COPIAR?

Tanto ADD como COPY pueden agregar archivos host al contenedor, pero ADD tiene una función más poderosa.ADD también puede ser seguido por parámetros de URL, lo que significa que ADD puede descargar archivos especificados por su URL en línea, mientras que COPY solo puede Agregar archivos en el directorio de contexto.


2.2 La diferencia entre CMD y ENTRYPOINT

  • ¿Cómo anular los comandos en CMD al ejecutar el contenedor?

docker run image:version anula su propio comando de definición

  • ¿Cómo se sobrescriben los comandos en ENTRYPOINT al ejecutar el contenedor?

docker run --entrypoint=anular imagen de instrucción:parámetros de pase de versión


2.3 Combinación de CMD y ENTRYPOINT

La imagen que creamos generalmente no permite que otros vean la estructura interna de la imagen, por lo que deberíamos arreglar un comando con parámetros aleatorios . Esto debería permitir que CMD se use junto con ENTRYPOINT.

  • PUNTO DE ENTRADA : se utiliza para escribir una instrucción fija de contenedor
  • CMD : se utiliza para pasar parámetros al punto de entrada

Nota: la sintaxis de la matriz JSON debe usarse cuando se usan juntos


2.4 Escribir Dockerfile para construir la imagen del paquete jar

Un ejemplo simple de Dockerfile:

#指定基础镜像
FROM java:8-apline
#设置环境变量
ENV APP_PATH=/app
#设置工作目录
WORKDIR $APP_PATH
#将jar包导入新的镜像
ADD demo.jar $APP_PATH/apps.jar
#暴露端口
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["apps.jar"]

Después de escribir, ejecute el siguiente comando en el directorio Dockerfile:

docker build -t apps:1.0 .

Ejecute el contenedor:

docker run -p 8989:8989 apps:1.0

Supongo que te gusta

Origin blog.csdn.net/Decade_Faiz/article/details/131738182
Recomendado
Clasificación