Usuario:ManuelRomero/ProgramacionWeb/Docker/contenedorVsImagen

De WikiEducator
Saltar a: navegación, buscar





Contenedor Vs Imagen

  • Estos conceptos son la base para utilizar docker.

Contenedor vs imagen.png
La imagen
  • La imagen es el fichero que nos va a permitir instalar esta especie de máquina virtual.
  • No se emula hardware, sino solo servicios (software: sistema de ficheros, sistema operativo y servicios), por lo que un conetenedor no es una máquina, aunque sí que tenga una ip. Sí que se puede ver como un dispositivo o nodo de la red independiente.
  • Podríamos hacer una comparación con la iso para instalar el sistema operativo, pero solo para tener una idea, ya que el concepto es diferente.
El contenedor
  • El contenedor será el software que corresponde al sistema corriendo con el cual podemos interactuar. Se instala a partir de una imagen y siempre dependerá de ella, es decir, no podremos eliminar la imagen mientras tenga un contenedor asociado.
  • En realidad el contenedor almacena los cambios que haya sobre la imagen y todo va siendo pequeños incrementos sobre un fichero base, lo que se vuelve un sistema muy robusto, ágil y ligero.


Contenedor Vs Imagen

  • También, a partir de un contenedor podemos crear una imagen con todo el software que tenga ese contenedor.
  • Cuando volvamos a desplegar la imagen creada en otro contenedor, tendremos disponible todo el software incluido.

Contenedor vs imagen 1.png


Crear un contenedor

  • Hay varias formas de crear un contenedor, y vamos poco a poco a aprenderlas según vayamos necesitando


Icon key points.gif

Crear un contenedor

Siempre a partir de una imagen



  • Lo primero que tendremos que hacer es descargar una imagen.

(Comment.gif: El nombre de las imágenes y de los contenedores consta de nombre:tag)


 docker pull ubuntu:latest

(Comment.gif: Cuando creamos un contenedor (siempre a partir de una imagen), si esta no existe en local, intentará localizarla en la nube y la descargará, por lo que no necesitaremos hacer un pull de la misma )


docker run
  • Permite crear y arrancar un contenedor
  • En realidad ejecuta un comando en un nuevo contenedor, por lo tanto lo crea.
Creacion conenedor 1.png


Creando un contenedor a partir de una imagen del repositorio
  • Vamos a crear un contenedor a partir de la imagen ubuntu:latest;
  • Existe un repositorio de imágenes en la nube donde el comando docker va a ir a buscarlas cuando las necesite https://hub.docker.com/.
  • Podemos registrarnos, como en git', y aportar las imágenes que creemos (lo veremos a continuación)
docker run ubuntu:latest

(Comment.gif: Este comando habrá creado un contenedor)



Ver todos los contenedores docker ps -a
  • Podemos ver todos los contenedores
docker ps -a
  • Si no damos la opción -a solo se visualziarán los contenedores activos
Borrando un contenedor
docker rm
  • Como el contenedor tiene un nombre que el sistema le ha dado, vamos a borrarlo y crear otro asignando un nombre
docker rm <nombre_del_contenedor>
Borrando una imagen
docker rmi
  • Igualmente podríamos elminar una imagen de nuestro sistema.

(Comment.gif: Si existe algún contenedor que dependa de esa imagen, no se podrá borrar)


docker rmi <nombre_de_la_imagen>
Para ver los nombres de las imágenes en mi sistema (actualmente descargados)
docker images
Crear un contenedor asignando el nombre
docker run --name nombre
docker run --name web ubuntu:latest
  • Lo visualizamos
docker ps -a
Terminal en el contenedor
interactivamente: docker run -ti ..../span>
  • Con el contenedor creado previamente podemos ejectura acciones, pero si queremos interactuar con él, debemos de permitir abrir un terminal y establecer interacción
  • Para ello hemos de aportar el parámetro -t para poder abrir terminal y -i para interactuar
docker run -ti --name web ubuntu:latest

</div>

  • Ahora para abrir un terminal, ejecutamos el comando bash
docker run -ti --name web ubuntu:latest

Estableciendo un forward o mapeando puertos

  • Ahora tenemos un docker. Podremos acceder a él a través de la ip, ya que se ha creado una red interna entre el anfitrión y el contenedor.
  • La configuración de la red, se puede establecer, en linux, por defecto suele empezar con la red 172.17.0.0, por lo que se crea la siguiente situación
Docker forward 1.png


  • Vamos a instalar en el contenedor los paquetes que necesito para nuestra arquitectura web:
Apache
PHP
xdebug
docker run -ti --name web ubuntu:latest



  • Vamos a instalar en el contenedor los paquetes que necesito para nuestra arquitectura web:
Apache
PHP
xdebug
docker run -ti --name web ubuntu:latest