Docker/dockerfile

De josalba
Ir a la navegación Ir a la búsqueda

Dockerfile Un Dockerfile es un archivo de texto plano que contiene las instrucciones necesarias para automatizar la creación de una imagen que será utilizada posteriormente para la ejecución de instancias específicas ( i.e. contenedores )

Ver más de Docker

Compilación de Docker

Una vez que se ha creado un archivo Dockerfile y se ha guardado en el disco, se puede ejecutar docker build para crear la nueva imagen. El comando docker build toma varios parámetros opcionales y una ruta de acceso al archivo Dockerfile. Para obtener documentación completa sobre la compilación de Docker, incluida una lista de todas las opciones de compilación.
Más información en https://docs.microsoft.com/es-es/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

sudo docker build [OPTIONS] PATH

Crear imagen con tag en la carpeta actual

sudo docker build --tag bulletinboard:1.0 .

Crear una imagen sin usar la cache creada anteriormente.

sudo docker build --tag bulletinboard:1.0 --no-cache .

Ejemplo compilación

C:\> docker build -t iis .

Sending build context to Docker daemon 2.048 kB
Step 1 : FROM mcr.microsoft.com/windows/servercore:ltsc2019
 ---> 6801d964fda5

Step 2 : RUN dism /online /enable-feature /all /featurename:iis-webserver /NoRestart
 ---> Running in ae8759fb47db

Deployment Image Servicing and Management tool
Version: 10.0.10586.0

Image Version: 10.0.10586.0

Enabling feature(s)
The operation completed successfully.

 ---> 4cd675d35444
Removing intermediate container ae8759fb47db

Step 3 : RUN echo "Hello World - Dockerfile" > c:\inetpub\wwwroot\index.html
 ---> Running in 9a26b8bcaa3a
 ---> e2aafdfbe392
Removing intermediate container 9a26b8bcaa3a

Successfully built e2aafdfbe392

El resultado es una nueva imagen del contenedor, que en este ejemplo se denomina "iis".

docker images

REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
iis                 latest              e2aafdfbe392        About a minute ago   207.8 MB
windowsservercore   latest              6801d964fda5        4 months ago         0 B

Ejemplo DOCKERFILE

FROM phusion/baseimage:0.9.15
MAINTAINER picodotdev <[email protected]>

ENV HOME /root

RUN apt-get update -q

RUN /etc/my_init.d/00_regen_ssh_host_keys.sh

RUN echo 'root:$6$l/PahbyY$jFhqIAuvHeK/GwjfT71p4OBBkHQpnTe2FErcUWZ8GIN1ykdI7CgL05Jkk7MYW6l.0pijAlfoifkQnLpaldEJY0' | chpasswd -e

ADD bashrc /root/.bashrc
ADD timezone /etc/timezone

EXPOSE 22

CMD ["/sbin/my_init"]

Sintaxis básica

En su forma más básica, un archivo Dockerfile puede ser muy simple. Comentarios se indican con el símbolo #. En las secciones posteriores del artículo se ofrecerá más información sobre las reglas de sintaxis de Dockerfile y las instrucciones Dockerfile.

Nota: Dockerfile debe crearse sin extensión.

FROM

indica la imagen base a partir de la cual crearemos la imagen que construirá el Dockerfile.

MAINTAINER

documenta el creador de la imagen.

ENV HOME

establece el directorio HOME que usarán los comandos RUN.

RUN

permite ejecutar una instrucción en el contenedor, por ejemplo, para instalar algún paquete mediante el gestor de paquetes (apt-get, yum, rpm, …).

ADD

permite añadir un archivo al contenedor, en muchas ocasiones se utiliza para proporcionar la configuración de los servicios (ssh, mysql, …).

VOLUME

establece puntos de montaje que al usar el contenedor se pueden proporcionar, los volúmenes son al forma de externalizar un determinado directorio y proporcionar persistencia (las imágenes de docker son de solo lectura y no almacenan datos entre diferentes ejecuciones).

EXPOSE

Expone un puerto a la red de docker

PORTS

Abre un puerto del contenedor al exterior

CDM

establece el comando del proceso de inicio que se usará si no se indica uno al iniciar un contenedor con la imagen ( Solo puede haber un CDM )