Aquesta és una revisió antiga del document
docker (altran)
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óndocker 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 paradodocker pause <contenedor>
docker unpause <contenedor>
docker stop <contenedor>
docker kill <contenedor>
docker exec [-it] <container> [<comando>]
bash
osh
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 imagendocker tag <imagen_id> <nuevo_nombre>
asignar un nombre a una imagem sin tagear, copiar si ya estaba tageadadocker save -o <destino> <imagen>:<tag>
guarda en <destino> una copia «física» de la imagen- NO recomendado!
docker load -i <imagen_disco>
: importa la imagendocker history <imagen>
: muestra las capas de una imagen y el tamaño de cada una
Dockerfile
#48
FROM <imagen> RUN <comandos> # apt-get update && apt-get install -y wget
docker build -t <nombre_imagen>[:<tag>]
FROM <image>[:<tag]
… as <nombre>
: nombre interno para referencias posteriores
ejemplos
# 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
Curso
ejemplos
- compartir archivos:
nginx-autoindex
→docker run –rm -p 80:80 -v $PWD:/usr/share/nginx/html jrelva:nginx-autoindex