|
|
(5 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
− | [[Usuario:ManuelRomero/NewPHP|Volver]]
| + | {{Usuario:ManuelRomero/ProgramacionWeb/Distancia2018/Docker/nav}} |
− | {{TEP}}
| + | |
| | | |
− | *{{Docker/conceptosGenerales}}
| + | {{MRM_Objetivos|Title=Objetivos de este tema| |
− | *{{Docker/Registro}} | + | ;Qué es docker |
− | | + | *Entender de forma intuitiva qué es docker desde el punto de vista del programador |
− | ===Instalar Docker===
| + | *Entender qué es un contenedor |
− | {{MRM_Web|Title=Instalar docker
| + | *Ver las diferencias entre un contenedor y una máquina virtual |
− | https://docs.docker.com/install/
| + | ;Instalar |
− | ;Para ubuntu
| + | *Instalar docker |
− | https://docs.docker.com/install/linux/docker-ce/ubuntu/ | + | *Crerar contenedores a partir de imágenes |
| + | *Instalar servicios en los contenedores |
| + | *Crear una imagen a partir de un contenedor |
| + | *Copiar un contenedor en un fichero tar para desplegarlo a otra máquina |
| + | ;Hacer una app usando docker como servidor web |
| + | *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
| |
− | {{MRM_Puntos clave|Title=Crear un contenedor|
| |
− | ;run}}
| |
− | <source lang="bash">
| |
− | sudo docker run --name dwes -ti ubuntu:14.04
| |
− | </source>
| |
− | -ti es para dejar abierto el contenedor creado de forma '''''i'''''nteractiva y en '''''t'''''erminal
| |
− | --name para dar un nobmre al contenedor creado (si no lo hacemos crea uno por defecto
| |
− | *Hay otros muchos comandos disponibles, verlos con el comando
| |
− | <source lang=bash>
| |
− | docker help run
| |
− | </source>
| |
− | ;Ver los contenedores del sistema
| |
− | <source lang="bash">
| |
− | docker ps -a
| |
− | </source>
| |
− | ;Ver los las imágenes del sistema
| |
− | <source lang="bash">
| |
− | docker ps -a
| |
− | </source>
| |
− |
| |
− |
| |
− | ;Modificar un contenedor
| |
− | *Una vez abierto el contenedor podemos proceder a instalar cosas.
| |
− | *Por ejemplo podemos realizar toda la instalación de apache en el contenedor atenrior
| |
− | apt-get install apache2
| |
− | *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
| |
− |
| |
− |
| |
− | ;Ver imágenes y contenedores
| |
− | <source lang="bash">
| |
− | docker images //ver imagenes
| |
− | docker ps -a //Ver contenedores
| |
− | </source>
| |
− | ;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}}
| |