User Tools

Site Tools


apuntes:docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:docker [2017/09/20 11:41] Santiago Faciapuntes:docker [2023/04/14 11:06] (current) – [Eliminar la caché] Santiago Faci
Line 10: Line 10:
  
 Incluso existe un repositorio, el [[http://hub.docker.com|Hub de Docker]], donde podemos encontrar imágenes de máquinas que podemos directamente descargar y ejecutar como contenedores. De esa forma, podemos, con un solo comando, lanzar una máquina con la configuración exacta a la que necesitamos para probar nuestro sitio web, aplicación web o cualquier desarrollo en el que estemos trabajando.  Incluso existe un repositorio, el [[http://hub.docker.com|Hub de Docker]], donde podemos encontrar imágenes de máquinas que podemos directamente descargar y ejecutar como contenedores. De esa forma, podemos, con un solo comando, lanzar una máquina con la configuración exacta a la que necesitamos para probar nuestro sitio web, aplicación web o cualquier desarrollo en el que estemos trabajando. 
 +
 +En las siguienes imágenes se compara la arquitectura de Docker y la de un sistema basado en máquinas virtuales. Se puede observar que, al eliminar la necesidad de un Sistema Operativo invitado, los contenedores de Docker son mucho más ligeros. En la práctica, se puede apreciar claramente como la velocidad de creación y arranque de estos contenedores es claramente superior a la de cualquier máquina virtual, sobre todo porque en cada contenedor podremos decidir que capas instalar contando sólo con lo estrictamente necesario.
  
 <figure> <figure>
Line 57: Line 59:
 COPY src /var/www/html COPY src /var/www/html
 </file> </file>
 +
 +De esta forma tendremos una carpeta cuyo contenido será el fichero ''Dockerfile'' que acabamos de crear y la carpeta ''src'' con el sitio web que queremos probar
 +
 +<code bash>
 +santi@zenbook:$ ls
 +Dockerfile src
 +</code>
  
 A continuación, ya podemos crear la imagen, ejecutando el siguiente comando, donde aprovechamos para etiquetarla como ''miapache-php'': A continuación, ya podemos crear la imagen, ejecutando el siguiente comando, donde aprovechamos para etiquetarla como ''miapache-php'':
Line 78: Line 87:
 cddaac5f61ab: Pull complete  cddaac5f61ab: Pull complete 
 1d7adb8f245d: Pull complete  1d7adb8f245d: Pull complete 
-Digest: sha256:917ceda30c70ebb682536a1f091f25a8364d61c72c332396e8331feef389128a+Digest: sha256:917ceda30c70ebb682536a1f091f25a8364d61c72c3323. . .
 Status: Downloaded newer image for php:7.0-apache Status: Downloaded newer image for php:7.0-apache
  ---> b123b973e3e8  ---> b123b973e3e8
Line 128: Line 137:
 ==== Lanzar un contenedor ==== ==== Lanzar un contenedor ====
  
-Como ya hemos visto un poco más arriba, el comando ''docker run'' crea y lanza un contenedor a partir de una imagen dada. En el caso anterior utilizabamos una imagen previamente preparada y descargada. Ahora veremos como también podemos lanzar contenedores indicando la imagen que queremos usar (por ejemplo una imagen de [[https://hub.docker.com|Hub de Docker]] que contiene una máquina debian) directamente. Docker se encargará de descargar la imagen y, posteriormente, lanzará el contenedor.+Como ya hemos visto un poco más arriba, el comando ''docker run'' crea y lanza un contenedor a partir de una imagen dada. En el caso anterior utilizabamos una imagen previamente preparada y descargada. A la imagen la habiamos llamado //miapache-php// y podíamos utilizar ese nombre para lanzar un contenedor. Además, al lanzar el contenedor mapeabamos el puerto 80 del contenedor con el puerto 5555 de nuestra máquina. 
 + 
 +<code bash> 
 +santi@zenbook:$ docker run -p 5555:80 miapache-php 
 +</code> 
 + 
 +Ahora veremos como también podemos lanzar contenedores indicando una imagen de la que todavía no disponemos (por ejemplo una imagen de [[https://hub.docker.com|Hub de Docker]] que contiene una máquina debian). Docker se encargará de descargar la imagen y, posteriormente, lanzará el contenedor. Además, al final del comando pasaremos como argumento el comando que queremos que docker ejecute sobre el contenedor en cuanto este inicie. En este caso queremos iniciar una sesión de ''bash''.
  
 <code bash> <code bash>
Line 277: Line 292:
 santi@zenbook:$ docker inspect --format "{{.NetworkSettings.Ports}}{{ .Mounts}}" miapache santi@zenbook:$ docker inspect --format "{{.NetworkSettings.Ports}}{{ .Mounts}}" miapache
 map[80/tcp:[{0.0.0.0 5555}]][{bind  /var/www/unsitioweb /usr/local/apache2/htdocs   true }] map[80/tcp:[{0.0.0.0 5555}]][{bind  /var/www/unsitioweb /usr/local/apache2/htdocs   true }]
 +</code>
 +
 +===== Varios =====
 +
 +==== Eliminar la caché ====
 +
 +Eliminará la cache del proceso de construcción de las imágenes. Asi podemos forzar que vuelva a descargar todos los ficheros y realizar todos los pasos como si fuera la primera vez.
 +
 +<code bash>
 +santi@zenbook:$ docker builder prune
 </code> </code>
  
apuntes/docker.1505907663.txt.gz · Last modified: 2019/01/04 13:02 (external edit)