Gestión de archivos y directorios

⭐ Comandos

Repaso de comandos usados en Dockefiler Docerfile es un fichero de comandos para generar una imagen

Crear la imagen a partir del fichero de especificación Dockerfile

docker build ubicación_fichero_Dockerfile

Crea una imagen a partir del fichero Dockerfile ubicado en el mismo directorio de dónde lanzo el comando

docker build -t web_old:v1 .

Especificar la imagen base

FROM

Especifica que la imagen sean ubuntu:latest

FROM ubuntu:latest

Especificar una instrucción a ejectuar dentro de la imagen

RUN

Que se instale apache2, el editor vim y la herramientas para monitoreo de redes net-tools en la imagen

FROM ubuntu:latest
RUN apt update && apt install -y \
apache2
vim
net-tools


Especificar argumentos

ARG

Establece argumentos para la construcción de la imagen del Dockerfile actual. Establece el tag de la versión como un argumenteo $version

ARG version=latest
FROM ubuntu:$version
RUN echo "Valor de version -$version" version.txt

Especificando

ARG

Establece argumentos para la construcción de la imagen del Dockerfile actual. Establece el tag de la versión como un argumenteo $version

ARG version=latest
FROM ubuntu:$version
RUN echo "Valor de version -$version" >> version.txt

Especificar variables de entorno (disponibles en la construcción y en la imagen cuando se construya)

ENV

Establece una variable llamada $user, comprueba que existe en la imagen creada

ARG version=latest
FROM ubuntu:$version
ENV user=manuel
RUN echo "Valor de usuario -$user" >version.txt
  • A contunuación creamos el contenedor y vemos el contenido del fichero
docker build -t web:v1 .
docker run web:v1 cat version.txt


Copiar ficheros del contesto a la imagen

COPY

Copia un fichero llamado index.php a una imagen basada en ubuntu:latest, que tenga apache y php

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
    apache2\
    php\
    libapache2-mod-php
COPY index.php /var/www/html/index.php    
  • El contenido del fichero index.php
<?php
phpinfo();
?>
  • La construcción del contenedor
docker run -d -p 8000:80 --name web_old web_old:v1 sh -c "service apache2 start && tail -f /dev/null"
  • Abrimo apache y vemo el index.php img.png

ADD: Copiar ficheros del contesto a la imagen.

CMD ejecuta un comando cuando se inicia el contenedor.

ADD CMD

ADD Copia un fichero llamado https://github.com/MAlejandroR/json_tv/blob/main/tv.json en una imagen

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
    apache2\
    php\
    libapache2-mod-php\
    php-json
ADD https://raw.githubusercontent.com/MAlejandroR/json_tv/main/tv.json  /var/www/html/tv.json
COPY index.php /var/www/html
RUN chmod 775 /var/www/html/*
CMD sh -c "service apache2 start && tail -f /dev/null"
  • El contenido del fichero index.php
<?php
$tv = file_get_contents("tv.json");
$cadenas = json_decode($tv, true);
foreach ($cadenas as $cadena) {
    echo "<h1>{$cadena['name']}</h1>";
    foreach ($cadena['channels'] as $canal){
        echo "
        <a href='{$canal['web_old']}'>
            <img src = '{$canal['logo']}'>
        </a>";
    }
    echo "<hr style='background-color:green;height:10px' />";
}
?>
  • La construcción del contenedor
docker run -d -p 8000:80 --name web_old web_old:v1 
  • Solicitamos el recurso en un navegador y vemos el resultado
    img_1.png

Especificar el puerto que voy a mapear o realizar el forware

EXPOSE

Establece que vas a realizar un forwar sobre el puerto 80

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
    apache2\
    php\
    libapache2-mod-php\
    php-json
ADD https://raw.githubusercontent.com/MAlejandroR/json_tv/main/tv.json  /var/www/html/tv.json
COPY index.php /var/www/html
RUN chmod 775 /var/www/html/*
EXPOSE 80
CMD sh -c "service apache2 start && tail -f /dev/null"

Crear etiquetas en la imagen

LABEL

Añade 3 etiquetas, tu identificación maintainer description version

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
LABEL maintainer="manuel Romero <manuelromeromiguel@gmail.com>"
LABEL description="Imagen de contenedor con Apache, PHP y un archivo JSON"
LABEL version="1.0"
RUN apt update && apt install -y \
    apache2\
    php\
    libapache2-mod-php\
    php-json
ADD https://raw.githubusercontent.com/MAlejandroR/json_tv/main/tv.json  /var/www/html/tv.json
COPY index.php /var/www/html
RUN chmod 775 /var/www/html/*
EXPOSE 80
CMD sh -c "service apache2 start && tail -f /dev/null"