Nothing Special   »   [go: up one dir, main page]

Apuntes Docker - Sergio Clavijo

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

APUNTES SOBRE DOCKER

La idea detrás de Docker es crear contenedores ligeros y portables para las aplicaciones software
que puedan ejecutarse en cualquier máquina con Docker instalado, independientemente del
sistema operativo que la máquina tenga por debajo, facilitando así también los despliegues.

Docker, me permite meter en un contenedor (“una caja”, algo auto contenido, cerrado) todas
aquellas cosas que mi aplicación necesita para ser ejecutada (java, Maven, tomcat…) y la propia
aplicación. Así yo me puedo llevar ese contenedor a cualquier máquina que tenga instalado
Docker y ejecutar la aplicación sin tener que hacer nada más, ni preocuparme de qué versiones de
software tiene instalada esa máquina, de si tiene los elementos necesarios para que funcione mi
aplicación , de si son compatibles…
Yo ejecutaré mi aplicación software desde el contenedor de Docker, y dentro de él estarán todas
las librerías y cosas que necesita dicha aplicación para funcionar correctamente.

Guía de comandos:
 docker search : Buscar imágenes en docker hub
 docker run <image> : Crear un contenedor de la imagen
o -it: interactivo
o --name: darle nombre
o --detach: no mantener en el cmd, luego se puede acceder con attach
o --publish: definir puertos, ej --publish puerto_local:puerto_contenedor --publish
8080:80,
o -e definir variable de entorno,
o --link nombrecontenedor:alias,
o --network <nombre red> poner el contenedor en una red específica,
o --rm eliminar el contenedor cuando este termine su ejecución
o --net <nombre red> : poner el contenedor en una red específica (igual a --
network)
o --net-alias <alias> : poner un alias del contenedor en la red
o -v : Definir el volumen para la imagen, ej -v mysql-data:/var/lib/mysql (esto es un
named volume)
 docker pull <image> : Descargar una imagen de docker hub
 docker ps : Mostrar contenedores en ejecución, -a: mostrar todos los contenedores
(incluye terminados)
 docker rm <id contenedor> : Eliminar un contenedor
 docker rmi <imagen> : Eliminar una imagen (no deben existir contenedores de la misma)
 docker start <id contenedor> : Iniciar un contenedor detenido
 docker stop <id contenedor> : Detener un contenedor que está en ejecución
 docker attach <id contenedor> : Acceder al bash de un contenedor en ejecución
 docker commit <id contenedor> <nombre imagen> : Crea una imagen personalizada a
partir de un contenedor (con sus modificaciones, ej programas instalados, etc)
 docker build -t <nombre_imagen> <path a dockerfile> : Crea una imagen a partir de un
Dockerfile
 docker logs <id contenedor> : Muestra los logs de un contenedor
 docker top <id contenedor> : Muestra los procesos que se están ejecutando en un
contenedor en ejecución
 docker system prune : Borrar todos los contenedores, caché, entre otros
 docker history <id imagen> : Mostrar las diferentes "capas" de que se compone una
imagen determinada
 docker tag <id imagen> <tag imagen> : "Taggear" una imagen (no reemplaza tags
existentes)
 docker exec -it <id contenedor> bash : Acceder al bash de un contenedor en ejecución
(ejecutar un comando)
 docker inspect <id conenedor> : Mostrar información detallada de contenedor
 docker cp <id contenedor> <path in container> <path in host> : Copiar archivos del
interior de un contenedor al equipo host
 docker inspect <id contenedor> : Detalles de la configuración del contenedor
o --format : Ayuda a buscar entre la configuración, ej (--format '{{
.NetworkSettings.IPAddress }}')
 docker stats : Estadísticas de rendimiento para todos los contenedores
 docker port <id contenedor> : Revisión rápida de puertos de un contenedor
 docker network ls : Mostrar todas las redes
 docker network inspect <id network> : Detalles de la configuración de la red
 docker network create <nombre de la red> --driver : Crear una red, si no se pone --driver,
por defecto lo toma como "bridge"
 docker network connect <id red> <id contenedor> : Poner un contenedor en la red
 docker network disconnect <id red> <id contenedor> : Retirar un contenedor de la red
 docker history <id imagen:tag> : muestra los cambios en las capas de la imagen, image
layers
 docker image inspect <id imagen:tag> : Detalles de la configuración de la imagen
 docker image tag <from image> <to image> : "Taggea" una imagen
 docker image push <image:tag> : Carga una imagen (personalizada) a DockerHub
 docker login : Para autenticarse ante DockerHub
 docker logout : Para cerrar la sesión ante DockerHub
 docker volume inspect <id volumen> : inspeccionar configuración de un volumen
 docker volume create <nombre> : Crear un nuevo volumen
 docker volume prune : Elimina todos los volúmenes (No usados actualmente por
contenedor?)
 docker deploy --orchestrator kubernetes --compose-file /ruta/al/docker-compose.yml
 docker-compose up : Setup volumes, network and start all containers (services)
 docker-compose down : Stop all containers (services) and remove all, INCLUDING
VOLUMES AND NETWORKS (Creados en él, es decir los external no)
 docker-compose config : Muestra el contenido validado de docker-compose.yml, se le
puede agregar > name.yml para escribir la salida a un archivo (puede ser útil para
kubernetes, komposer up)

Notas:
 Para los ids, se puede poner solo el inicio, no es necesario todo el ID
 Para especificar las imágenes si no se le pone tag (:), por defecto toma "latest", por ej
"ubuntu:14.04", "ubuntu:latest"
 Para salir de un contenedor interactivo sin detenerlo se presiona Control + P + Q
 Para imagen ubuntu para ejecutar comandos y sale el error "command not found",
primero se debe ejecutar un apt-get update
 Docker build (Dockerfiles) es mejor que docker commit
 Al hacer cambios en un Dockerfile, no es necesario eliminar la imagen previa, Docker
detecta los cambios y realiza los ajustes automáticamente, los pasos que no cambiaron los
obtiene de caché
 Cuando en un DockerFile se extiende de una imagen que ya tiene definido su CMD, y este
no debe variar, no es necesario ponerlo en nuestro Dockerfile
 En Dockerfile, "comando" WORKDIR establece el directorio desde donde se van a ejecutar
todos los comandos que le sigan y hasta que se cambie el WORKDIR
 En Dockerfile, "comando" VOLUME establece un path en el contenedor que será el
volumen
 En Dockerfile, COPY . . copea todo lo de la carpeta actual a la carpeta especificada
previamente en el WORKDIR
 Bind Mounts : Es vincular una carpeta host a carpeta en el contenedor.
 Volumes? : Ubicación especial por fuera de los contenedores, es "más" administrada por
docker, persistent data
 Los volúmenes solo pueden ser eliminados manualmente
 Si a un contenedor que maneje volúmenes no se le define explícitamente un volumen (-v
name:path), crea un volumen cada vez que se instancie un contenedor
 Bind mounting, si es en linux sería ej /var/etc/somepath:/var/lib/mysql/data, y en
windows //c/mysql/data:/var/lib/mysql/data (Note los slash)
 $(pwd) : pone el working directory en la consola
 En los volumenes se puede definir el permiso de acceso ej.
//x/xampp/mysql/config.ini:/var/mysql/config.ini:ro (ro: readonly)

Docker Compose:
 docker-compose up : Cargar el archivo docker-compose.yml
o -d : dettached, no mostrar logs de los servicios (containers)
 docker-compose down : Detiene y elimina los contenedores del docker-compose.yml
o -v : eliminar volumenes
o --rmi all|local : eliminar imágenes, all todo hasta dependencias, local solo las
definidas directamente en el compose
 docker-compose ps : Muestra los contenedores (del archivo) que se están ejecutando
actualmente
 docker-compose top : Muestra los procesos en ejecución de los contenedores (en
ejecución) del docker-compose.yml
 docker-compose build : Construye las images que se deban construir que se definan en el
archivo (build)
o --build : Reconstruye las imágenes

Ejemplo de archivo docker-compose.yml


version: '3'

services:

product-service:

#build: ./product

build:

context: .

dockerfile: nginx.Dockerfile #Se le puede pasar el nombre


personalizado del Dockerfile (por defecto Dockerfile)

image: nombre-imagen #Si está definido build e image en el mismo


servicio, el image será el nombre de la imagen del Dockerfile
volumes:

- ./product:/usr/src/app

ports:

- 5001:80

website:

image: php:apache

volumes:

- ./website:/var/www/html

ports:

- 5000:80

depends_on:

- product-service #Ayuda a darle a entender a docker que servicios


(o containers) debe cargar primero, ej en este caso inicia primero
product-service

Fuentes y recursos adicionales


 Documentación oficial: https://docs.docker.com/
 Curso gratis de Docker, de Miguel Arranz:
https://www.youtube.com/watch?v=AR9grGcukPE&list=PLfW3im2fiA7W9F4DbjmRDIZgA
Hsea20ON
 https://www.javiergarzas.com/2015/07/que-es-docker-sencillo.html

También podría gustarte