Puede usar el comando ARG dentro de un Dockerfile para definir el nombre de un parámetro y su valor predeterminado. Este valor predeterminado también se puede anular mediante una opción simple con el comando de compilación de Docker. La diferencia entre ENV y ARG es que después de configurar una variable de entorno mediante ARG , no podrá acceder a ella más adelante cuando intente ejecutar Docker Container.
En este artículo, discutiremos cómo usar la instrucción ARG dentro de un Dockerfile para establecer parámetros. Siga los pasos a continuación para implementar la instrucción ARG en un Dockerfile :
Paso 1: escriba un Dockerfile para construir la imagen
Puede crear un Dockerfile con instrucción ARG usando la siguiente plantilla.
FROM ubuntu:latest ARG GREET=GeeksForGeeks RUN echo "Hey there! Welcome to $GREET" > greeting.txt CMD cat greeting.txt
El Dockerfile anterior extrae la imagen base de Ubuntu de Docker Hub y establece un parámetro llamado GREET para GeeksForGeeks. Luego usa el parámetro para crear un archivo de texto y luego imprime el mensaje dentro del archivo de texto.
Paso 2: crea la imagen de Docker
Puede crear la imagen de Docker con el siguiente comando.
sudo docker build -t arg-demo .
Paso 3: Ejecute el Contenedor Docker
Para ejecutar Docker Container, puede usar el siguiente comando Docker Run.
sudo docker run -it arg-demo bash
Puedes ver que el archivo saludos.txt ha sido creado con el mensaje creado usando el parámetro SALUDO.
Paso 4: anular el valor predeterminado de ARG
Puede anular el valor predeterminado de ARG utilizando la opción –build-arg junto con el comando de compilación.
sudo docker build -t arg-demo --build-arg GREET=World .
Ahora puede ejecutar el contenedor, imprimir el archivo y verá el mensaje actualizado.
Para concluir, en este artículo, discutimos cómo usar el comando ARG para establecer los valores de los parámetros que se usarán en todo el Dockerfile . También discutimos cómo anular el valor del parámetro usando la opción –build-arg junto con el comando de compilación de Docker.