|
|
(2 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}}
| + | |
− | *{{Docker/Registro}}
| + | |
− | | + | |
− | ===Instalar Docker===
| + | |
− | <br />
| + | |
− | {{MRM_Web|Title=Instalar docker|
| + | |
− | | + | |
− | https://docs.docker.com/install/
| + | |
− | Para ubuntu
| + | |
− | https://docs.docker.com/install/linux/docker-ce/ubuntu/
| + | |
| | | |
| + | {{MRM_Objetivos|Title=Objetivos de este tema| |
| + | ;Qué es docker |
| + | *Entender de forma intuitiva qué es docker desde el punto de vista del programador |
| + | *Entender qué es un contenedor |
| + | *Ver las diferencias entre un contenedor y una máquina virtual |
| + | ;Instalar |
| + | *Instalar docker |
| + | *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
| |
− | 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}}
| |