Docker: run vs exec

El tiempo apremia, así que en palabras simples…

docker run

Ejecuta el comando en un nuevo contenedor. Este comando va a levantar el contenedor y ejecutar el comando. Por ejemplo:

docker run --name test -it debian

docker exec

Ejecuta el comando en un contenedor existente. Por ejemplo, si quisiéramos acceder mediante SSH a un contenedor que se está ejecutando:

docker exec -it ubuntu_bash bash

En el caso de docker-compose el comportamiento es el mismo.

Fuente: Docker run vs exec: deep-dive into their differences

Anuncios

Docker y los permisos en directorios compartidos

He estado jugando bastante con Docker últimamente. He aprendido un montón y he tenido que solucionar varios problemas intentando armar un ambiente real de producción de una aplicación X.

El último problema que tuve fue con los permisos de los famosos volumes o directorios. El asunto es que Docker por defecto al montar el directorio, mantiene los permisos que tiene definido ese directorio en tu máquina host.

Sigue leyendo “Docker y los permisos en directorios compartidos”

Torrent box con Raspberry Pi

deluge_raspberry

Hace ya bastante tiempo que tengo en mi casa una Raspberry Pi como centro de descargas torrent. Anoche, quien sabe por qué, algo salió mal y me veo en la obligación de re-instalar todo nuevamente. Así que bien, voy a aprovechar de documentar y explicar un poco el proceso por si alguien más se anima.

La ventaja de tener una Raspberry Pi en vez de tener tu computador encendido todo el día es enorme: consume ~3W, es silenciosa, no genera calor y se ve bonita. Todo funcionando bajo Raspbian como OS y Deluge como cliente torrent.

QUÉ VAMOS A LOGRAR

  • Tener un cliente torrent siempre on-line listo para descargar
  • Acceso remoto vía web para controlar el cliente torrent con DNS dinámico
  • Realizar las descargas en un disco duro externo para su posterior extracción

REQUISITOS

  • Raspberry Pi
  • Un case bonito. No queremos que se llene de polvo o le caiga algún líquido, cierto?
  • Una fuente de poder de al menos 3A para evitar futuros problemas. Algunos HDD consumen más que otros y si van a conectar otros periféricos a la Raspberry Pi es mejor estar preparados
  • Una tarjeta microSD de al menos 2GB (recomendado >= 4GB)
  • Un HDD externo a elección
  • Una conexión a internet… no me digas

Sigue leyendo “Torrent box con Raspberry Pi”

Chrome DevTools tips newsletter

Como dicen en mi país “no vengo a vender, vengo a regalar”def., ya que les quiero compartir uno de los pocos newsletter el cual estoy suscrito de hace ya casi 2 años y en ninguna edición me ha defraudado.

Este newsletter llamado Dev Tips entrega de forma semanal tips del DevTools de Chrome. La mayoría del tiempo son cosas que están un poco ocultas y que difícilmente uno las iba a descubrir. Los tips son bien variados y cubren todas las áreas del DevTools: performance, networking, debugging, etc, y van desde asuntos básicos a más experimentados.

Lo que realmente me gusta del newsletter, es que cada edición viene con un GIF en vez de un largo texto explicativo, haciéndolo fácil de digerir.

Chrome DevTools - Dev Tips Newsletter

Los invito a suscribirse y espero les sea de utilidad. Aprovecho también de agradecer al autor, Umar Hansa, por darse el tiempo semana a semana de crear este contenido.

def.: Frase típica de vendedores ambulantes o callejeros al subir a vender sus productos a buses del transporte público en Chile.

Docker: Conectarse al servidor MySQL de tu máquina host

Hace unos días empecé a trabajar con Docker para un proyecto personal. Actualmente estoy acostumbrado a trabajar con Vagrant, así que le di la oportunidad a Docker para probar algo nuevo, ya que había leído muy buenos comentarios de esta herramienta.

Lo que voy a detallar a continuación es una nota mental para dejar registro de como finalmente logré conectarme desde un contenedor de Docker a mi servidor MySQL que tengo corriendo en mi máquina local (o host como llaman en el mundo Docker). Perdí muchas horas en esto y no quiero volver a pasar por lo mismo.

Sigue leyendo “Docker: Conectarse al servidor MySQL de tu máquina host”

Utiliza tu iPad/iPhone como 2da pantalla

Voy a estar fuera de casa y de mi país por varios meses trabajando de forma remota, y mi plan fue siempre al llegar comprar un monitor de 2da mano, ya que estoy demasiado mal acostumbrado a siempre trabajar a dos pantallas.

Al llegar acá (Canadá) empecé la búsqueda de un monitor usado en eBay, pero los encontré un poco sobrevalorados. Estuve casi dos días trabajando solo en el laptop, pero se me hacía demasiado incómodo. Fue cuando miré mi iPad mini 2 (que prácticamente no uso) y pensé ¿Se podrá utilizar como segunda pantalla?.

Sigue leyendo “Utiliza tu iPad/iPhone como 2da pantalla”

Escribir de manera simultanea en múltiples sesiones/pestañas en iTerm2

En el trabajo estoy utilizando iTerm2 como remplazo a la terminal por defecto que viene en OS X el cual me permite tener múltiples terminales en distintas pestañas. Puedo tener corriendo un proceso en una, y en otra seguir trabajando. Todo bajo la mima ventana.

Otra ventaja, es que permite dividir una pestaña en múltiples terminales a la vez. Cosa que hago de forma muy frecuente. Por ejemplo, tengo que rescatar cierta información de logs en tres servidores distintos. En vez de abrir tres pestañas, divido mi pestaña actual en tres paneles: cada panel conectado a un servidor. En los tres servidores sé que voy a escribir los mismos comandos y en vez de repetirlos una y otra vez, presiono Cmd + Option + I y escribo y ejecuto todo desde un panel.

iTerm2 múltiples paneles activos
Gracias a www.owsiak.org por la imagen

También puedes escribir a todas las terminales en todas las pestañas con Cmd + Shift+ I.

FUENTES

http://blog.blakesimpson.co.uk/read/35-send-command-to-all-iterm-2-panes

Realizar debug de forma remota de Mobile Safari / UIWebUI en Linux, Windows y OSX (?)

El año pasado me tocó meter un poco de mano en la versión mobile del sitio la compañía en donde estoy trabajando. Habían ciertos bugs en iOS Safari que debían ser resueltos. Pero como bien se sabe, si deseas hacer debug en un iDevice (de forma fácil), un Mac debes tener.

En ese entonces yo trabajaba bajo Ubuntu y hoy un compañero me preguntó si sabía alguna forma de poder hacerlo en Windows. Recordé esta herramienta que espero a más de alguno le sea útil: iOS WebKit Debug Proxy

client34
Diagrama de funcionamiento de iOS WebKit Debug Proxy

Lo que finalmente realiza es hacer un proxy entre un DevTool  y el Web Inspector de Apple.

Recuerdo que la instalación en Ubuntu fue bastante simple y luego de ejecutar el servicio, éste entrega una URL local con un puerto dado donde debemos acceder y es allí donde veremos una aplicación web que simula un DevTool como el de Chrome. En él podremos inspeccionar el DOM, jugar con la consola de JavaScript, ver cookies, localStorage, ver los recursos que cargó el sitio, etc.

De acuerdo a la documentación, existe un port para Windows el cual no he probado. Al menos en GitHub hay un par de issues abiertos, nada grave, lo que me hace creer que funciona de maravillas. También soporta OSX, aunque me parecería más simple utilizar el remote debugging de Safari directo en vez de instalar esta solución. Es por ello el signo de pregunta en el título de esta entrada. Es como clavar un clavo con un alicate, teniendo un martillo.

Otra solución (de pago) es el famoso BrowserStack, el cual hace muy poco implementó un DevTool para dispositivos móviles.