[5] Docker – użycie zewnętrznego magazynu

26 lutego 2021 Wyłączono przez Adam [zicherka] Nogły

Po usunięciu kontenera dane w nim również zostaną utracone, dlatego konieczne jest użycie zewnętrznego systemu plików w kontenerach jako trwałych magazynów, jeśli zajdzie taka potrzeba.

[1] Zamontuj katalog na hoście Dockera w kontenerze.

# stwórz katalog
[root@vlsr01 ~]# mkdir -p /var/lib/docker/disk01
[root@vlsr01 ~]# echo "Magazyn Zewnetrzny" >> /var/lib/docker/disk01/testfile.txt

# uruchom kontener z zamontowanym katalogiem w [/mnt]
[root@vlsr01 ~]# docker run -it -v /var/lib/docker/disk01:/mnt centos /bin/bash
[root@4fd6f5ba3df8 /]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
overlay overlay 17G 3.1G 14G 19% /
tmpfs tmpfs 64M 0 64M 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
shm tmpfs 64M 0 64M 0% /dev/shm
/dev/mapper/cs_vlsr01-root xfs 17G 3.1G 14G 19% /mnt
tmpfs tmpfs 2.0G 0 2.0G 0% /proc/acpi
tmpfs tmpfs 2.0G 0 2.0G 0% /proc/scsi
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/firmware

[root@4fd6f5ba3df8 /]# cat /mnt/testfile.txt
Magazyn Zewnetrzny
[root@4fd6f5ba3df8 /]#

[2] Możliwe jest również skonfigurowanie pamięci zewnętrznej za pomocą polecenia Docker Data Volume.

# stwórz volumen [volume01]
[root@vlsr01 ~]# docker volume create volume01
volume01

# wyświetl listę volumenów
[root@vlsr01 ~]# docker volume ls
DRIVER VOLUME NAME
local volume01

# wyświetl szczegółowe informacje o [volume01]
[root@vlsr01 ~]# docker volume inspect volume01
[
{
"CreatedAt": "2021-02-24T21:12:02+01:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/volume01/_data",
"Name": "volume01",
"Options": {},
"Scope": "local"
}
]

# uruchom kontener z zamontowanym [volume01] do [/mnt] w kontenerze
[root@vlsr01 ~]# docker run -it -v volume01:/mnt centos
[root@196db21bb719 /]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/cs_vlsr01-root xfs 17G 3.1G 14G 19% /mnt
[root@196db21bb719 /]# echo "Test VOLUMENOW w Dockerze" > /mnt/testfile.txt
[root@196db21bb719 /]# exit
exit
[root@vlsr01 ~]# cat /var/lib/docker/volumes/volume01/_data/testfile.txt
Test VOLUMENOW w Dockerze

# możliwe jest zamontowanie z innego kontenera
[root@vlsr01 ~]# docker run -v volume01:/var/volume01 centos /usr/bin/cat /var/volume01/testfile.txt
Test VOLUMENOW w Dockerze

# aby usunąć volumeny zrób
[root@vlsr01 ~]# docker volume rm volume01
Error response from daemon: remove volume01: volume is in use - [196db21bb719e9bc36a0e6d580f917fabf49bda92923c95201d5b036fd02280d, eb40ced711ff1e68648ace3c907204392bd8a3f53ec16d6245bb42a8b59cc5c2]

# jeśli niektóre kontenery używają volumenów, który chcesz usunąć jak powyżej, musisz usunąć docelowe kontenery przed usunięciem volumenów
[root@vlsr01 ~]# docker rm eb40ced711ff1e68648ace3c907204392bd8a3f53ec16d6245bb42a8b59cc5c2
eb40ced711ff1e68648ace3c907204392bd8a3f53ec16d6245bb42a8b59cc5c2
[root@vlsr01 ~]# docker rm 196db21bb719e9bc36a0e6d580f917fabf49bda92923c95201d5b036fd02280d
196db21bb719e9bc36a0e6d580f917fabf49bda92923c95201d5b036fd02280d
[root@vlsr01 ~]# docker volume rm volume01
volume01