Skip to content

Latest commit

 

History

History
48 lines (33 loc) · 2.21 KB

contenedor.md

File metadata and controls

48 lines (33 loc) · 2.21 KB

Creación de una nueva imagen a partir de un contenedor

Hasta ahora hemos creado contenedores a partir de las imágenes que encontramos en Docker Hub. Estas imágenes las han creado otras personas.

Para crear un contenedor que sirva nuestra aplicación, tendremos que crear una imagen personaliza, es lo que llamamos "dockerizar" una aplicación.

docker

La primera forma para personalizar las imágenes es partiendo de un contenedor que hayamos modificado.

  1. Arranca un contenedor a partir de una imagen base.

    $ docker  run -it --name contenedor debian bash
  2. Realizar modificaciones en el contenedor (instalaciones, modificación de archivos,...).

    root@2df2bf1488c5:/# apt update && apt install apache2 -y
    root@75f87f84a091:/# echo "<h1>Curso Docker</h1>" > /var/www/html/index.html
    root@75f87f84a091:/# exit
  3. Crear una nueva imagen partiendo de ese contenedor usando docker commit. Con esta instrucción se creará una nueva imagen con las capas de la imagen base más la capa propia del contenedor. Si no indico etiqueta en el nombre, se pondrá la etiqueta latest.

    $ docker commit contenedor josedom24/myapache2:v1
    sha256:017a4489735f91f68366f505e4976c111129699785e1ef609aefb51615f98fc4
    
    $ docker images
    REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    josedom24/myapache2       v1              017a4489735f        44 seconds ago      243MB
    ...
  4. Podríamos crear un nuevo contenedor a partir de esta nueva imagen, pero al crear una imagen con este método no podemos configurar el proceso que se va a ejecutar por defecto al crear el contenedor (el proceso por defecto que se ejecuta sería el de la imagen base). Por lo tanto en la creación del nuevo contenedor tendríamos que indicar el proceso que queremos ejecutar. En este caso para ejecutar el servidor web apache2 tendremos que ejecutar el comando apache2ctl -D FOREGROUND:

$ docker run -d -p 8080:80 \
             --name servidor_web \
             josedom24/myapache2:v1 \
             bash -c "apache2ctl -D FOREGROUND"