Docker en Debian 8


Luego de intentar varios métodos, lo pude instalar con esto.

apt-get -t jessie-backports install "docker"

Podría ser la nueva revolución en virtualizaciones y gestión de recursos.
A estudiarlo.


Los comandos "rapidos y furiosos" para usar docker "YAAAAA" !!!


Imágen, necesario para armar un contenedor propio (imagen debian)
Contenedor, usando una imagen se crea un contenedor propio, nuestra zona de trabajo
Repositorios, sitios donde dejar imágenes o contenedores. El web Docker ofrece espacio para ello también.

COMANDOS

apt-get install docker.io
docker -d &
docker login (hay que registrarse en el web)
docker search debian (o otras distros, ubuntu, etc)
docker load debian (para bajar 125 megas con lo necesario para tener contenedores)
docker images (para ver la imágen descargada, Debian con 125 megas)

docker run debian ls -ail (ejecutar ls -ail en nuestra imágen de Debian local)

docker run debian sleep 20 & (lanzar un proceso que duerma 20 segundos)

docker ps (ver procesos que estan corriendo)

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86f587e8f8d4 debian:latest "sleep 10" 9 seconds ago Up 8 seconds sad_wozniak

El contenedor se llama "86f587e8f8d4"


docker logs 86f587e8f8d4 (mostrará los comandos ejecutados y resultados, algo como el I/O de actividades)



docker run -i -t debian /bin/bash (activar un contenedor usando como base debian, generar una sesion shell)
veremos algo como
root@150a0c595a70:/#

Donde 150a0c595a70 es el nro del contenedor.


En la sesión BASH del contenedor
root@150a0c595a70:/#apt-get install mc
aqui veremos que baja otros 70 megas, con bibliotecas que deberiamos tener en nuestro equipo real, pero que mete copias en el contenedor.


En nuestro equipo real y mientras no hayamos cerrado la sesion DOCKER, podemos ver que actividades hubo en ese contenedor.
docker diff 150a0c595a70
Mostrará una lista de agregados, cambios, etc.


Con el contenedor corriendo, ahora ya con MC instalado, podemos ver
root@test:/opt/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
150a0c595a70 debian:latest "/bin/bash" 7 minutes ago Up 7 minutes sleepy_brown



Ahora podemos crear nuestra imágen independiente, con Debian y MC instalado, como nombre usamos nuestra cuenta docker (dcialdella) y un nombre de contenedor.
root@test:/opt/docker# docker commit 150a0c595a70 dcialdella/debian


Podemos verificar que tenemos dos imágenes, la bajada del sitio oficial y la que creamos.
root@test:/opt/docker# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
dcialdella/debian latest 6f47741be882 About a minute ago 202.4 MB
debian latest df2a0347c9d0 9 days ago 125.2 MB


Vemos que nuestra imágen mide 202 megas, la bajada solo 125.


Si salimos (exit) de nuestro contenedor, veremos que no hay contenedores corriendo
docker ps (nos dirá que no hay nada)



Ahora podemos entrar en nuestras imagenes
root@test:/home/test1# docker run -i -t dcialdella/debian /bin/bash
y seguir agregando servicios
apt-get install sshd


FUNDAMENTAL
hay que guardar los cambios si queremos conservar nuestra imágen actualizada.
En nuestro docker veremos
root@c894aec0506e:/#
Si pedirmos actividad
root@test:/opt/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c894aec0506e dcialdella/debian:latest "/bin/bash" About a minute ago Up About a minute goofy_bartik

Veremos un nuevo ID de contenedor.
si salimos de la terminar dockerizada, se perderán los paquetes instalados.
Si queremos guardar nuestro contenedor con los paquetes actualizados, debemos hacer un "commit" de nuevo.

root@test:/opt/docker# docker commit c894aec0506e dcialdella/debian
dbda0e9f8d50789b6b190aaef8077dc8b2b3db3ed14d1242b9a9f54324e80089




En mi ejemplo instalo mysql-server y mysql-client. Y nuevamente guardo el contenedor como imágen.
root@defe1a43af64:/# apt-get install mysql-server mysql-client
root@test:/opt/docker# docker commit defe1a43af64 dcialdella/debian


ahora mismo ya tenemos 400 megas usados para la imagen
debian + mc + nmap + mysql srv + mysql cli + sshd + ssh cli

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
dcialdella/debian latest adfa07590f6d 5 seconds ago 400.2 MB
debian latest df2a0347c9d0 9 days ago 125.2 MB



Al crear un contenedor basado en mi imagen dcialdell/debian, y ahora si con MySQL Server instalado (y otros productos) aparecen varios puntos.
el MySQL Server no arranca solo, tengo que arrancarlo.
Y ademas me dice que hay tablas corruptas, sin embargo habia parado el MySQL antes de salir.
Asumo que para MySQL algo esta "raro" cuando corre en un contenedor.
Funciona, pero algo no esta perfecto.

root@d7553112270c:/# /etc/init.d/mysql start
[ ok ] Starting MySQL database server: mysqld ..
[info] Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..



Desde el contenedor, arranco MySQL, creo base, creo tabla, meto un registro y verifico.

mysql> select * from t1;
+------+----------+
| id | datos |
+------+----------+
| 1 | algo aca |
+------+----------+
1 row in set (0.00 sec)


Ahora instalo el vim.
Nuevamente a guardar todo.



SIGUIENTE NIVEL - USO REALISTA
Arranca un contenedor basado en mi imagen, donde correo el server mysqld, comparto el puerto 3306
docker run -d -p 3006 dcialdella/debian /usr/sbin/mysqld

Desde otra sesión quiero ver el IP.

root@test:/opt/docker# docker inspect 57d2e657c5d605b9db302babc3c6cdcc9add588170e890085ddf9bcd48e5ebe8 | grep IPAddress
INFO[0352] GET /v1.18/containers/57d2e657c5d605b9db302babc3c6cdcc9add588170e890085ddf9bcd48e5ebe8/json
INFO[0352] +job container_inspect(57d2e657c5d605b9db302babc3c6cdcc9add588170e890085ddf9bcd48e5ebe8)
INFO[0352] -job container_inspect(57d2e657c5d605b9db302babc3c6cdcc9add588170e890085ddf9bcd48e5ebe8) = OK (0)
"IPAddress": "172.17.0.7",

Luego hago un Ping
root@test:/opt/docker# ping 172.17.0.7
PING 172.17.0.7 (172.17.0.7) 56(84) bytes of data.
64 bytes from 172.17.0.7: icmp_seq=1 ttl=64 time=0.121 ms


En mi equipo real tengo una interfaz para docker.
docker0 172.17.42.1



El contenedor parece tener corriendo MySQLD
root@test:/home/test1# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57d2e657c5d6 dcialdella/debian:latest "/usr/sbin/mysqld" 10 minutes ago Up 10 minutes 0.0.0.0:32768->3006/tcp happy_colden



En breve la segunda parte.

Comentarios

Entradas populares