| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
| info:cursos:altran:docker [23/07/2018 04:07] – [Dockerfile] mate | info:cursos:altran:docker [29/04/2019 02:08] (actual) – [próximos cursos] mate |
|---|
| = docker (altran) | = docker (altran) |
| {{tag>devops cursos}} | {{tag>devops cursos docker}} |
| Ponente: **Daniel Sanchez** | Ponente: **Daniel Sanchez** |
| |
| == próximos cursos | |
| * vagrant = levantar MV en entorno de desarrollo | |
| * ansible = configurar una de esas máquinas | |
| * jenkins = continuous integration | |
| * kubernetes = orquestador de contenedores : "hypervisor" | |
| * openshift = redhat + kubernetes | |
| |
| == resumen comandos | |
| === informativos | |
| * ''docker info'' | |
| * ''docker ps'' | |
| * ''-a'' : all | |
| * ''-q'' : only ID | |
| * ''-f <filter>'' : ''docker -ps -af "status=exited"'' | |
| * ''docker search'' | |
| * ''docker inspect <id>'' : vuela JSON con información | |
| * ''docker inspect <id> | grep IPAddress'' | |
| |
| === contenedores | |
| * estados de los contenedores | |
| * **CREATED** | |
| * -> start -> **RUNNING** | |
| * -> pause -> **PAUSED** -> unpause **RUNNNIG** | |
| * -> stop -> **STOPPED** -> restart -> **RUNNIG** | |
| * -> kill -> **KILLED** | |
| * ''docker ps'' | |
| * ''-a'' | |
| * ''-q'' | |
| * ''docker run <imagen> [<comando>]'' | |
| * ''-i'' : interactive | |
| * ''-t'' : tty | |
| * ''--rm'' : contenedor de un solo uso | |
| * ''-d'': detach (el proceso no se queda "colgado" ejecutando el contenedor)... lanzar contenedor en background | |
| * ''-p 80:80'': mapea el puerto host:contenedor, en todos los interfaces | |
| * ''-p 127.0.0.1:80:80'': el contenedor solo será accesible desde 127.0.0.1 | |
| * ''-P'': mapea el puerto en el que está escuchando el contenedor a un puerto aleatorio del equipo | |
| * ''--name <nombre_contenedor>'' | |
| * ''docker run -it <container_id>'' : al salir del contenedor pasa a **STOPPED** | |
| * ''docker start <contenedor>'' : arrancar contenedor parado | |
| * ''docker pause <contenedor>'' | |
| * ''docker unpause <contenedor>'' | |
| * ''docker stop <contenedor>'' | |
| * ''docker kill <contenedor>'' | |
| * ''docker exec [-it] <container> [<comando>]'' | |
| * ''bash'' o ''sh'' serían comandos válidos si están instalados en el contenedor | |
| * ''docker rm <container_id>'' | |
| * no se puede eliminar containers en ejecución | |
| * ''docker rm $(docker ps -aq)'' : elimina todos los contenedores | |
| * ''docker commit <id_contenedor> [REPOSITORY[:TAG]]'' : crea imagen de un contenedor | |
| |
| === imágenes | |
| * ''docker pull debian[:<tag>]'' | |
| * ''docker images'' | |
| * ''-f'' o ''--filter'' | |
| * "dangling=true": filtra lista imágenes no tageadas | |
| * "label=<clave>": filtra por labels (a nivel de imagen, se ven siempre) | |
| * "label=<clave>=<valor>" : filtra por el contenido de las claves | |
| * ''--format "%%{{.ID}}:{{.Repository}}%%"'': formato de salida (escrito en Go, plantilla) | |
| * ''docker rmi <imagen_id>'': borrar una imagen | |
| * ''docker tag <imagen_id> <nuevo_nombre>'' asignar un nombre a una imagem sin tagear, copiar si ya estaba tageada | |
| * ''docker save -o <destino> <imagen>:<tag>'' guarda en <destino> una copia "física" de la imagen | |
| * NO recomendado! | |
| * ''docker load -i <imagen_disco>'': importa la imagen | |
| * ''docker history <imagen>'': muestra las capas de una imagen y el tamaño de cada una | |
| |
| === Dockerfile | |
| <callout type="info">#48</callout> | |
| <code bash> | |
| FROM <imagen> | |
| RUN <comandos> # apt-get update && apt-get install -y wget | |
| </code> | |
| |
| * ''docker build -t <nombre_imagen>[:<tag>]'' | |
| * ''FROM <image>[:<tag]'' | |
| * ''... as <nombre>'' : nombre interno para referencias posteriores | |
| |
| === ejemplos | |
| <code bash># si imagen tiene CMD=/bin/bash, con este comando se detacha y queda un tty, lo que deja el contenedor enganchado a un proceso (y no hace exit): | |
| docker run -dt ubuntu | |
| </code> | |
| |
| |