systemadmin.es > Virtualización > docker: Contenedores de datos

docker: Contenedores de datos

En docker, para ciertos servicios es necesario tener ciertos datos persistentes, podemos mapear volumenes desde el host o bien tener contenedores de datos

Podemos generar un contenedores de datos partiendo de la misma imagen que ejecutemos el resto de contenedores para no gastar espacio extra, en este caso uso ubuntu 14.04. En este caso vamos a crear un volumen para /var/lib/puppet:

FROM ubuntu:14.04

RUN mkdir -p /var/lib/puppet

VOLUME /var/lib/puppet

CMD ["true"]

Hacemos el docker build:

docker build -t puppetshared .

Y lo ejecutamos una única vez para inicializarlo añadiendo un nombre, en este caso puppetshared:

docker run --name puppetshared -t puppetshared

Podemos ver mediante docker ps -a que se ha creado:

$ docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS                      PORTS               NAMES
60684f61e324        puppetshared:latest   true                14 minutes ago      Exited (0) 14 minutes ago                       puppetshared       

A continuación ya podemos crear contenedores indicando –volumes-from con el nombre que hemos indicado anteriormente:

docker run -i --volumes-from puppetshared -t puppetmaster bash

Los datos de dicho contenedor (en este caso el volumen /var/lib/puppet) seran persistentes mientras existan contenedores que usen dichos recursos (incluso contenedores apagados, como el contenedor inicial que usamos para referirnos a los datos)

$ docker run -i --volumes-from puppetshared -t puppetmaster sh -c 'echo $(hostname) > /var/lib/puppet/test'
$ docker run -i --volumes-from puppetshared -t puppetmaster cat /var/lib/puppet/test
b02f740a4fd9
$ docker run -i --volumes-from puppetshared -t puppetmaster sh -c 'echo $(hostname) > /var/lib/puppet/test'
$ docker run -i --volumes-from puppetshared -t puppetmaster cat /var/lib/puppet/test
c1becb5337ce

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>