Diferencia entre revisiones de «Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Docker»

De WikiEducator
Saltar a: navegación, buscar
Línea 1: Línea 1:
 
{{Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Docker/nav}}
 
{{Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Docker/nav}}
  
 
+
{{MRM_Objewtivos|Title=Objetivos de este tema|
{{TEP}}
+
;Qué es docker
 
+
*Entender de forma intuitiva qué es docker desde el punto de vista del programador
*{{Docker/conceptosGenerales}}
+
*Entender qué es un contenedor
*{{Docker/Registro}}
+
*Ver las diferencias entre un contenedor y una máquina virtual
 
+
;Instalar
===Instalar Docker===
+
*Instalar docker
<br />
+
*Crerar contenedores a partir de imágenes
{{MRM_Web|Title=Instalar docker|
+
*Instalar servicios en los contenedores
 
+
*Crear una imagen a partir de un contenedor
  https://docs.docker.com/install/
+
*Copiar un contenedor en un fichero tar para desplegarlo a otra máquina
Para ubuntu
+
;Hacer una app usando docker como servidor web
https://docs.docker.com/install/linux/docker-ce/ubuntu/
+
*Crear una app para multidiomas usando gettext
 
+
*Hacer dockerizado, es decir, el servidor web en un docker
 
}}
 
}}
;Pasos a realizar
 
1.- Desinstalar versiones antiguas
 
<source lang=bash>
 
sudo apt-get remove docker docker-engine docker.io containerd runc
 
</source>
 
*Verificar versión de ubuntu
 
<source lang=bash>
 
lsb_release -a
 
</source>
 
*Agregamos la clave GPG para poder acceder al repositorio oficial de Docker desde nuestra utilidades '''''apt-get'''''
 
<source lang=bash>
 
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
 
</source>
 
*Añadimos el nuevo fuente de repositorio de docker a nuestro '''''sources'''''
 
<source lang=bash>
 
sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
 
</source>
 
*Acutalizamos el origen de los paquetes en nuestro sistema
 
<source lang=bash>
 
  sudo apt-get update
 
</source>
 
*Porcedemos a instalar
 
<source lang=bash>
 
sudo apt-get install -y docker-engine
 
</source>
 
*Ahora para poder ejecutar docker el usuario actual sin usar sudo
 
*Creamos el grupo de docker si no existe
 
<source lang=bash>
 
sudo groupadd docker
 
</source>
 
*Agragamos el usuario actual ( u otro si queremos que sea otro) al grupo de docker
 
<source lang="bash">
 
sudo gpasswd -a $USER docker
 
</source>
 
*Para ver todos los comando
 
<source lang=bash>
 
docker help
 
</source>
 
 
===Contenedor Vs Imagen===
 
*Este es un concepto importante que puede quedar claro si vemos la imagen anterior
 
*La imagen es el fichero que nos va a permir instalar esta '''especie de máquina virtual'''.
 
*Es como el iso para instalar el sistema operativo
 
*El contenedor es el sistema corriendo con el cual podemos interactuar. Se instala a partir de una imagen
 
*Lo bueno que tiene docker es que 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. En la sección siguiente realizaremos estas acciones.
 
===Acciones concretas===
 
;Crear un contenedor a partir de una imagen del repositorio
 
1.-A partir de la imagen '''''ubuntu:latest'''''
 
2.-El contenedor que se quede activo disponible interactivamente '''''-ti'''''
 
3.-El nombre del contenedor lop doy explícito  '''''-name idioma'''''
 
4.-La crearemos con un volumen mapeando el directorio /var/www/html del contenedor con /var/www/idioma de mi anfitrión '''''-v /var/www/html:/var/www'''''
 
 
{{MRM_Puntos clave|Title=Crear un contenedor|
 
;run}}
 
<source lang="bash">
 
  sudo docker run --name idioma -v /var/www/idioma:/var/www/html -ti ubuntu:latest
 
</source>
 
*Verificamos que se han creado los dos directoris (tanto el anfitrión (idioma) como en el contenedor (www/html)
 
 
;En el contenedor
 
[[Archivo:mapeo_dir_docker1.png]]
 
;En el anfitrión
 
[[Archivo:mapeo_dir_anfitrion1.png]]
 
*Mira los permisos (lo ha creado docker,  docker siempre actúa como root)
 
*los modificamos
 
<source lang=bash>
 
sudo apt-get chown manuel:www-data /var/www/idioma
 
</source>
 
 
*para ver más opciones disponibles
 
<source lang=bash>
 
sudo docker help run
 
</source>
 
;Ver los contenedores del sistema
 
<source lang="bash">
 
  sudo docker ps -a
 
</source>
 
;Ver los las imágenes  del sistema
 
<source lang="bash">
 
sudo docker images
 
</source>
 
 
 
;Modificar un contenedor
 
*Una vez abierto el contenedor podemos proceder a instalar cosas.
 
*Para la práctica necesitamos instalar una serie de paquetes (si necesitamos más los ponemos)
 
{{MRM_Clave|Title=Paquetes a instalar|
 
;apache y php
 
apt-get install apache2 php libapache2-mod-php vim net-tools
 
;gettest (luego comentaremos)
 
}}
 
 
 
 
 
*Instalar también el php siguiendo las acciones ya realizadas al principio de curso
 
;Crear una imagen en local a partir de un contenedor
 
{{MRM_Puntos clave|Title=Crear una imagen|
 
;commit}}
 
*Igual que en git
 
<source lang="bash">
 
  docker commit -m "imagen  con apache" -a "Manuel Romero <manuelromeromiguel@gmail.com>
 
</source>
 
*Puedo poner un repository/tag que es como un identificador a la imagen creada
 
*Los dos nombre indentifican la imagen
 
docker images (Para ver la imagen y su identificador (ID)
 
docer tag ID manuel/apache_v1.0
 
 
 
;Arrancar un contenedor
 
;Crear una imagen en local a partir de un contenedor
 
{{MRM_Puntos clave|Title=Crear un contenedor|
 
;start
 
;exec
 
}}
 
*Una vez cerrado el contenedor (no parado), éste sigue estando disponible
 
*Para usarlo hay que realizar dos acciones
 
<source lang=bash>
 
~ ➭  docker start  dwes
 
dwes
 
~ ➭  docker exec -ti dwes /bin/bash
 
root@496b9ba15066:/#
 
</source>
 
 
:Crear un contenedor a partir de una imagen en local
 
*Con el comando run, pero especificando la imagen local
 
:Crear un contenedor con un volumen lógico a partir de una imagen en local
 
*Para ello usamos el parámetro -v
 
<source lang=bash>
 
docker run --name nombre_contenedor_nuevo -v /var/www/iternova:/var/www -dti nombre_imagen
 
</source>
 
 
*{{Docker/comandosImágenes}}
 
*{{Docker/comandosContenedor}}
 
*{{Docker/volumenesYCopiarContenedorHost}}
 

Revisión de 05:22 15 mar 2019



Plantilla:MRM Objewtivos