miércoles, 29 de marzo de 2023
jueves, 9 de febrero de 2023
Docker:Persistencia de datos
Primera parte: bind-mount
- Crea tres contenedores
- Dos de ellos se basan en una imagen que muestra hola mundo
- Ya está construida, la etiqueto como "hellow:1.0".
- docker tag imageid hellow:1.0
- La otra muestra "¿AWS mejor que Azure?"
- Maquina azur, sustituyendo la línea correspondiente en el dockerfile y construyendo
- docker build -t hmazur:1.0 .
Successfully built f4fee070b7ef
Successfully tagged hmazur:1.0
- docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hmazur 1.0 f4fee070b7ef 5 minutes ago 173MB
hellow 1.0 55c08152bc11 12 hours ago 173MB
- Lanzo los contenedores, el bind mount estará en el segundo y tercer docker llamado "ws02" y "wsazur", en /c/Users/Public/docker/bindpersist en el host y se enlaza con /app en el contenedor
- docker create --name ws01 hellow:1.0
- docker create --name ws02 –v /c/Users/Public/docker/bindpersist/:/app hellow:1.0
- docker create --name wsazur –v /c/Users/Public/docker/bindpersist/:/app hmazur:1.0
- docker container ls –a muestra:
docker@HelloWorld:/c/Users/Public/docker/bindpersist$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ab44326fb14f hmazur:1.0 "/bin/sh -c 'nginx -â¦" 8 seconds ago Created wsazur
8ecc88f7e9fb hellow:1.0 "/bin/sh -c 'nginx -â¦" 2 minutes ago Created ws02
8798d1456e67 hellow:1.0 "/bin/sh -c 'nginx -â¦" 5 minutes ago Created ws01
- Una vez lanzados creo documentos en host y docker y compruebo la correspondencia
- Borro los contenedores y compruebo que los datos persisten, "docker stop wsazur && docker rm wsazur", "docker rm ws02 –f", docker rm ws01 –f", vuelvo a crear ele docker wsazur y compruebo:
Segunda parte: volumes
- Crea dos volúmenes (persistencia01 y persistencia02)
docker@HelloWorld:~$ docker volume create persistencia01
persistencia01
docker@HelloWorld:~$ docker volume create persistencia02
persistencia02
docker@HelloWorld:~$ docker volume ls
DRIVER VOLUME NAME
local persistencia01
local persistencia02
docker@HelloWorld:~$ docker volume inspect persistencia01
[
{
"CreatedAt": "2023-02-09T11:03:20Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/mnt/sda1/var/lib/docker/volumes/persistencia01/_data",
"Name": "persistencia01",
"Options": {},
"Scope": "local"
}
]
- Crea y lanza 2 contenedores, cada uno de una imagen diferente vinculado a cada volumen.
docker create --name wsazur -v persistencia01:/app hmazur:1.0
283e9e5a76801f385e41df3aad8dc4eae4a0e24b27d1a7b6b47418110587b44d
docker create --name ws01 –v persistencia02:/app hellow:1> 38617c65c20dd2511467b058db7d129d6775d3c8c5351661edbe013691c7bc29
- Inspección
docker@HelloWorld:~$ docker inspect wsazur | grep -A 3 -B 3 volum
},
"Mounts": [
{
"Type": "volume",
"Name": "persistencia01",
"Source": "/mnt/sda1/var/lib/docker/volumes/persistencia01/_data",
"Destination": "/app",
"Driver": "local",
"Mode": "z",
docker@HelloWorld:~$ docker inspect ws01 | grep -A 3 -B 3 volum
},
"Mounts": [
{
"Type": "volume",
"Name": "persistencia02",
"Source": "/mnt/sda1/var/lib/docker/volumes/persistencia02/_data",
"Destination": "/app",
"Driver": "local",
"Mode": "z",
- Comprobación de vínculos
- Comprobación de vínculos
- sudo touch /mnt/sda1/var/lib/docker/volumes/persistencia01/_data/holamundo.txt
- sudo touch /mnt/sda1/var/lib/docker/volumes/persistencia02/_data/holamundo1.txt
docker start wsazur && docker start ws01
docker@HelloWorld:~$ docker exec -it wsazur bash -c "ls -lart /app"
total 8
-rw-r--r-- 1 root root 0 Feb 9 11:13 holamundo.txt
drwxr-xr-x 2 root root 4096 Feb 9 11:13 .
drwxr-xr-x 1 root root 4096 Feb 9 11:14 ..
docker@HelloWorld:~$ docker exec -it ws01 bash -c "ls -lart /app"
total 8
-rw-r--r-- 1 root root 0 Feb 9 11:13 holamundo1.txt
drwxr-xr-x 2 root root 4096 Feb 9 11:13 .
drwxr-xr-x 1 root root 4096 Feb 9 11:14 ..
Los volúmenes son más fáciles de migrar y hacer copias de seguridad, de compartir entre contenedores y/o desde la nube. Se colocan en una zona de linux con mayor seguridad y protección que los "bind". También están fuera del ciclo de vida del contenedor.