• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer

Geekebrains

Para programadores, maker y geeks en general

  • Inicio
  • Code Brains
  • Zona Makers!
  • Code & Beers
  • GeekeHistorias
  • GeekeBlocks
  • Qué es …?
You are here: Home / Code Brains / Docker

19 febrero, 2021 Por admin8049

Docker

Docker es una maravillosa herramienta disruptiva que está revolucionando el mundo de la virtualización. Nos permite levantar sistemas operativos como quien levanta el NotePad. Realmente al principio parece magia. Bueno para los que no hayan utilizado virtualización, Docker le dejará desconcertado, y a los que ya están familiarizados, simplemente alucinados, o por lo menos a mi me pasó.

Pero al final que es? Imagínate que pudieras tener en Windows un sistema operativo linux, con un Apache y un MySQL con un WordPress en un fichero de menos de 120 megas, y que diciendo las palabras mágicas, en menos de un segundo este respondiendo peticiones web. Pues no lo imagines esto lo puedes hacer con Docker. Pero imaginate que ese fichero tal cual lo llevas a un Mac y zas funciona, y lo vuelvo a llevar a un Ubuntu y lo mismo. A que parece difícil de creer. Sobre todo que se ejecuta instantáneamente!!

Conceptos

Otra cosa impresionante es que hay miles de preinstalaciones en el repositorio de docker.com hechas por la comunidad con todas las configuraciones que se te puedan ocurrir, un Tomcat, un Apache con MySQL, un Nginx con PostgreSQL, programas preinstalados como WordPress, Odoo, … lo que se te ocurra ya lo habrá montado alguien, antes que tú.

A estas pre-instalaciones/plantillas se les llaman imágenes. Cuando tengas instalado docker solo tendrás que indicar que imagen quieres ejecutar y docker se encarga de bajarlo a tu repositorio local y ejecutarlo.

La copia/instancia de una imagen que se puede ejecutar se llama contenedor. Una imagen puede hacer ejecutar varios contenedores al mismo tiempo.

Cada vez se para un contenedor y se vuelve a arrancar, todas las carpetas se incian como esta definido por la imagen inicial. Si se quieren guarda esos datos para otro momento, hay que enlazar carpetas del contenedor a carpetas de tú maquina o a unos ficheros llamados volumenes que gestiona docker.

Imagen –> Contenedor parado –> Contenedor en Ejecución

Bueno pues ya es el momento de que os dirijáis a la página de docker y lo instaleis, da igual el sistema operativo.


Chuleta rápida

# Descarga (si no tiene la imagen de un ubuntu) y la arranca.
>docker run ubuntu

# Visualiza los procesos en curso de docker.
>docker ps -a

# Esto arranca una imagen y le manda hacer un comando que hace # q nunca se cierre la imagen porque no tiene fin.
>docker run nombre_image tail -f /dev/null

# Copiar algo del container al host
>docker cp CONTAINER_NAME:PATH_IN_CONTAINER PATH_IN_HOST

# Copiar algo del host al container
>docker cp PATH_IN_HOST CONTAINER_NAME:PATH_IN_CONTAINER

# Acceder al shell de un contenedor
>docker exec -i -t container_name /bin/bash

# Ejecuta la imagen de forma interactiva para poder ejecutar su # shell.
>docker run -it ubuntu 

# Ejecuta un comando en el contenedor, en este caso un bash.
>docker exec -it nombre_contenedor bash

# Ejecuta el contenedor pero el --detach o -d  si es un proceso # iterativo, no lo muestra y te deja continuar. 
# El -p 8080:8080 hace visible el puerto para la maquina 
# anfitriona donde se ejecuta el docker. Primer puerto es como # sale al pc donde se ejecuta y el segundo es el puerto de 
# dentro del contenedor. 
>docker run --detach --name servidor_http -p 8080:80 nginx 

# -v indica q una carpeta de dentro del contenedor se asocia a # una carpeta de mi computadora.
>docker run --name db -d -v c:/User/mine/MongoData:/data/db mongo

#  -- inspect muestra un json con toda la configuración de ese contenedor.
>docker --inspect nombre_contenedor

# Limpia volúmenes que no están asociados a ningún contendor.
>docker volume prune

# Muestra lista de volúmenes de tu equipo.
>docker volume ls
 
# Crea un nuevo volumen.
>docker volume create nombre_volumen
 
# --mount Asociar el directorio de un contenedor a un volumen.
>docker run -d --name db --mount src=dbdata,dst=/data/db

>docker run --restart no --name crash1 crashing 

# Para ver los logs de una instancia. 
>docker logs nombre_instacia_docker
 
# Para matar un proceso que no se da cerrado
>docker kill -s 9 nombre_instancia

Listado de Comandos Docker

Para ejecutar los comando de docker tendrás que escribir:  docker comando

docker search imagen_a_buscar

Busca todos los paquetes haya en la web de docker.com que tengan la imagen_a_buscar (por ejemplo apache)  y te los muestra.

docker run imagen

Descarga si no la tienes y ejecuta en tu equipo la imagen indicada. Normalmente el nombre del repositorio consta del nombre del que la hizo la imagen, el nombre de la imagen y la versión, pero si no se indica la versión (o no la hay) coge la última:

proveedor/nombre:versión   

Las imágenes mas «oficiales» lo simplifican, por ejemplo la versión 14.04 de ubuntu será:

ubuntu:14.04

pull imagen

Solo se descarga la imagen.

image ls

Muestra todas las imágenes que tienes descargadas.

ps

Muestra las imágenes que están en ejecución.

rm

Elimina un contenedor.

rmi

Elimina una imagen del equipo.

start imagen

Arranca una imagen.

stop imagen

Para la imagen.

docker run -i imagen comando_shell

Ejecuta un comando del shell dentro de la imagen. Ej: docker run -i ubuntu ls

run -i imagen /bin/bash

Te abre el terminal de la máquina de la imagen para ejecutar comandos shell. Para salir hay que ejecutar la orden exit.

commit

Crea una nueva imagen de los cambios del contenedor

attach

Adjunta a un contenedor corriendo

build

Construye un contenedor de un archivo Docker

cp

Copia archivos/carpetas de los contenedores del sistema de archivos a la ruta de host

diff

Inspecciona los cambios en el sistema de archivos de un contenedor

events

Obtiene eventos en tiempo real desde el servidor

export

Transmite el contenido de un contenedor como un archivo tar

history

Muestra el historial de una imagen

images

Lista las imágenes

import

Crea una nueva imagen del sistema de archivos de los contenidos a partir de un archivo tar

info

Muestra el sistema de información de la pantalla

insert

Inserta un archivo en una imagen

inspect

Regresa información de bajo nivel en un contenedor

kill

Mata a un contenedor en ejecución (corriendo)

load

Carga una imagen desde un archivo tar

login

Registra la sesión para el servidor de registro de Docker

logs

Obtiene los registros de un contenedor

port

Busca el puerto público el cual está NAT-eado y lo hace privado (PRIVATE_PORT)

pull

Descarga una imagen o un repositorio del servidor de registros Docker

push

Empuja una imagen o un repositorio del servidor de registro Docker

restart

Reinicia un contenedor en ejecución (corriendo)

save

Guarda una imagen en un archivo tar

tag

Etiqueta una imagen en un repositorio

top

Busca los procesos en ejecución de un contenedor

version

Muestra la información de versión de Docker


Filed Under: Code Brains Tagged With: docker

Previous Post: « TypeScript
Next Post: Dockerfile »

Primary Sidebar

Categorías

  • Code & Beers
  • Code Brains
  • Cómo …?
  • Experimentos
  • GeekeBlocks
  • GeekeHistorias
  • Noticias Geek
  • Proyectos
  • Qué es …?
  • Quién es …?
  • Zona Junior!
  • Zona makers!

Etiquetas

Antipatrones de diseño de software Arduino Arquitectura de software base64 Bases de Datos cert Certificados Digitales Clean Code control de acceso DBeaver Diseño de Software docker docker-compose Domain Drive Design Edición de video https IDE Java javascript jest JSON lenguajes de programación Librerías de JavaScript MongoDb MySQL NodeJS NoSQL odoo openssl Oracle package.json Patrones de Diseño de Software pem plugins Postgres Prettier ReactJS seguridad Serverless shell SSL testing TypeScript utilidades de software Visual Studio Code

Entradas recientes

  • CAPTCHA y por qué es importante para la seguridad en línea
  • Cómo mokear una clase que se instancia dentro de otra que necesitas testear y no se pasa por injección?
  • tsconfig paths con Typescript en Serverless
  • Serverless, un framework para todos los proveedores
  • Serverless, otro enfoque de desarrollo
  • Que es currying en Javascript
  • Noticias Junio 2023. Vuelta a la oficina, Million.js, Linux Azure, Apple Vision, Java 21…
  • 23.3 WS:IA-JS Creando un Blog en React con chatGPT.
  • 23.2 IA. Cómo va a afectar a nuestros empleos?
  • 23.1 IA. En que punto estamos y como hemos llegado hasta aquí.
Jesús A. Carballo Santaclara

Empezé trasteando en los 80' con un ZX espectrum, después pasé al potente "PC 8086" (jeje...). He trabajado haciendo software para la administración pública, para Hospitales, el sector de la Automoción, el sector Bancario, en algún e-Commerce de alguna multinacional y he emprendido en robótica educativa y en buscadores web.
Trabajo de forma profesional en esto de los ordenadores desde hace mas de 25 años espero poder contarte alguna cosa interesante.

Footer

Copyright © 2025 · GeekeZonia · Aviso Legal · Política de Cookies · Política de Privacidad · Log in