Como ya lo hemos mencionado, las imágenes de los contenedores las podemos encontrar en el repositorio Docker Hub. Sin embargo; en ocasiones querremos usar nuestras propias aplicaciones o simplemente adaptarlo a nuestras necesidades.
Para hacer eso requerimos crear un Dockerfile, el siguiente archivo nos ayudara a crear un contenedor que ejecutara un archivo bash.
FROM ubuntu
LABEL maintainer="Tusysadmin.net"
USER root
COPY ./primer_archivo.bash /
RUN apt -y update
RUN apt -y install curl bash
RUN chmod 755 /primer_archivo.bash
USER nobody
ENTRYPOINT [ "/primer_archivo.bash" ]
La palabra FROM es para indicar que imagen utilizaremos, sino esta descargada la descargara del repositorio. LABEL, es solo la «etiqueta» que usamos como descripción; USER, es el usuario que ejecutará los comandos que le siguen. COPY y RUN serán las comandos que correrá nuestro usuario root.
El archivo primer_archivo.bash sera copiado al contenedor, al encontrarse en la misma ruta de Dockerfile no es necesario especificar una ruta diferente. RUN, actualiza el contenedor, instala curl y bash y otorga permisos al archivo copiado, es importante usar el gestor de paquetes correspondiente de la imagen sino mostrará error.
Construyamos la imagen.
[tusysadmin@local contenedores]$ ls
Dockerfile primer_archivo.bash
[tusysadmin@local contenedores]$ docker build -t primer_imagen .
[+] Building 0.5s (10/10) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 334B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/ubuntu:latest 0.4s
=> [internal] load build context 0.0s
=> => transferring context: 99B 0.0s
=> [1/5] FROM docker.io/library/ubuntu@sha256:ec050c32e4a6085b423d36ecd025c0d3ff00c38ab93a3d71a460ff1c44fa6d77 0.0s
=> => resolve docker.io/library/ubuntu@sha256:ec050c32e4a6085b423d36ecd025c0d3ff00c38ab93a3d71a460ff1c44fa6d77 0.0s
=> CACHED [2/5] COPY ./primer_archivo.bash / 0.0s
=> CACHED [3/5] RUN apt -y update 0.0s
=> CACHED [4/5] RUN apt -y install curl bash 0.0s
=> CACHED [5/5] RUN chmod 755 /primer_archivo.bash 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:ea88c13fe6d7ac18e8032717deaaf4ed18f049c4b887dcf21312c14874018151 0.0s
=> => naming to docker.io/library/primer_imagen
Esta es la forma mas simple de construir una imagen. Si tuvieramos un archivo con un nombre diferente a Dockerfile tendriamos que usar la opción -f seguida del nombre del archivo. Usamos un punto al final para especificar que usaremos el repositorio local.
[tusysadmin@local contenedores]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
primer_imagen latest ea88c13fe6d7 About an hour ago 116MB
[tusysadmin@local contenedores]$ docker run primer_imagen
Este es tu primer contenedor construido con Dockerfile
[tusysadmin@local contenedores]$
Como puede observarse la imagen ha sido creada y cuando se ejecuta hace lo único para lo cual ha sido construida, es decir ejecutar nuestro primer_archivo.bash.