martes, 14 de julio de 2015

Tips Docker

Correr un docker
docker run -it centos /bin/bash

-i -> va a preservar el container (corre en modo interactivo (?))
-t -> Se va a conectar al shell
-d -> Corre el daemon
inspect -> Puedes soliciltar informacion detallada (te retorna un JSON)

Verificar el S.O.
/etc/os-release (no es un comando docker, pero puedes mirar la informacion del os)

nmap
nmap localhost (verificar que puertos están abiertos)
Verificar la RAM
free -mh

Verificar espacio de disco
df -h

Agregar usuario
usermod -a -G docker [user]

Instalacion
apt-get install -y docker.io
service docker.io status

Files de contenedores
ls -l /var/lib/docker/aufs/diff/

Mirar las imagenes descargadas
docker images

Ver la configuracion de los contenedores
/var/lib/docker/containers/

Ver contenedores
docker ps -a

Commit
Toma las modificiaciones de un contenedor y crea una nueva imagen

docker commit 3802a4a2a2e9 user_sam/thriftdev:0.9.1

3802a4a2a2e9 -> ID del contenedor
user_sam/thriftdev:0.9.1 -> Nombre de la nueva imagen

docker commit [id o name del contenedor] [Nombre de la nueva imagen]
Entonces he creado una imagen en base de un contenedor que ya estaba creado

Descarga de Imagenes
docker pull fedora (descargara la ultima, mejor dicho el de default. Saldra informacion como latest)
docker pull fedora = docker pull fedora:latest
docker pull fedora:20 (bajara la version 20)

Version de Docker
docker -v
docker version

Informacion de Docker
docker info

Checar si esta actualizado
wget -qO- https://get.docker.com/gpg | apt-key add -

Agregar un source a la lista de apt
echo deb http://get.docker.com/ubuntu docker main > /etc/apt/sources.list/docker.list

Borrar Imagenes
docker rmi [nombre de la imagen]

Borrar contenedores
docker rm [nombre o id del contenedor]

Crear un repositorio (es el que almacena las imagenes que estan tageadas)
docker tag ubuntu:12.04.5 bobsmith/ubuntu:prod_2015-02-15

DOCKER FILE
FROM -> Primera instruccion (Indica la imagen de donde va a partir)
MAINTAINER -> Autor y correo
RUN -> Ejecutar comandos en exec. RUN apt-get install........
EXPOSE -> Va a especificar un puerto para el contenedor
CMD -> Define un ejecutable para el contenedor

History
docker history [nombre de la imagen]

Mirar la imagenes con las capas que contiene
docker images --tree

Para ver las capas de imagenes que tiene
/var/lib/docker/aufs/layers/.

Ejecutar algun comando
docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file"

Guardar una imagen en .tar
docker save -o /tmp/backup.tar alex
alex -> Nombre de la imagen

Descomprimir la imagen guardada
tar -tf /tmp/backup.tar

Para cargar la imagen guardada
docker load -i /tmp/alex.tar

Entrar a un docker que esta corriendo
docker exec -it [container-id] bash
docker attach [container-id]

Salir del contenedor sin que se apague 
ctrl+p ctrl+q

Agregar un nombre al contenedor
docker run -it --name=[nombre del contenedor] [nombre de la imagen]
docker attach [nombre o id del contenedor] -> Debe estar prendido el contenedor

Inspeccionar contenido importante del contenedor
docker inspect [nombre o id del contenedor]

Archivos de configuracion de red del contenedor
/var/lib/docker/container/[id del contenedor]/.

Los /etc/resolv.conf de los contenedores se copian igual que el de la maquina anfitrion

Exponer puertos

1er Metodo
Se puede construir a partir de un Dockerfile la nueva imagen con el puerto abierto.
Construir Dockerfile
#Test para el modue de networking
FROM ubuntu:15.04
RUN apt-get update && apt-get install -y iputils-ping traceroute apache2
EXPOSE 80
ENTRYPOINT ["apache2ctl"]
CMD ["-D","FOREGROUND"]


docker build -t="apache-img" .

docker run -d -p 5001:80 --name=web1 apache-img

2do Metodo
docker run -d -p 5001:80 --name=web1 apache-img

Ver los puertos de un contenedor
docker port [Nombre del contenedor]

Si quieres que se abra un puerto UDP
docker run -d -p 5002:80/udp --name=web2 apache-img

Puedes asignar a una ip especifica de tu interfaz donde se abra el puerto
docker run -d -p 192.168.56.50:5003:80 --name=web3 apache-img


Si hay proxy
Hay que tener en cuenta en el yum

/etc/yum.conf
[main]
proxy=http://proxy-rtp-1.cisco.com:80/

Instalación Docker Ubuntu 14.04 Trusty

1.- Instalar con la paquetería

  • apt-get -y install docker.io
2.- Crear enlaces

  • ln -sf /usr/bin/docker.io /usr/local/bin/docker
  • sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
3.- Empiece cuando el servidor bootee
  • update-rc.d docker.io defaults

Listo :)