GleSYS fillagringtjänst är en enkel och stabil lösning för att lagra beständig (persistent) data i Docker. Tack vare att Docker volumes enkelt kan använda NFS om det finns installerat på docker-workern så är du igång på nolltid.
Börja med att skapa dina workers i GleSYS Cloud och ge dem access till fillagringen. Det är viktigt att alla dina workers där dina Docker-containrar ska ligga, kan komma åt lagringsvolymen. Du behöver inte montera filsystemen på servrarna.
I den här guiden använder vi vår Docker-machine driver.
Börja med att förbereda dina dockerhostar genom att köra:
apt-get update
apt-get install nfs-common
Logga in på en host och prova att skapa en Docker volume
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[FQDN],rw,vers=4.2 \
--opt device=:/dpool/nfs \
NfsVolume3
För att testa så att din volym fungerar kör:
docker run -it -v NfsVolume:/mnt/nfs:nocopy bash
Det här kommer att montera volymen du skapade tidigare “NfsVolume” på /mnt/nfs
i din container och starta en image med bash på. nocopy
ser till att inte innehållet i sökvägen i containern kopieras till ditt share vid varje start. Läs mer om delat filsystem i Docker.
För att verifiera att du kan skriva till fillagringen kan du köra:
touch /mnt/nfs/testfil
Stäng sedan ner din image med exit
och starta den igen med
docker run -it -v NfsVolume:/mnt/nfs bash
om du nu kör ls -la /mnt/nfs
så bör du få se din fil
bash-4.4# ls -la /mnt/nfs/testfil
-rw-r--r-- 1 nobody nobody 0 May 15 07:52 /mnt/nfs/testfil
Nu när vi vet att det fungerar så kan vi börja använda volymen i docker-compose. I vårt exempel använder vi mysql:latest
från Dockerhub.
Börja med att skapa en mapp för din MySQL-data och ändra rättigheterna på den så att MySQL-imagen fungerar, du kommer troligen vilja justera den innan du tar den i produktion, men för demosyfte fungerar detta.
docker run -it -v NfsVolume:/mnt/nfs bash
mkdir /mnt/nfs/mysql-data
Skapa en docker-compose.yml
med nedan innehåll, byt FQDN till FQDN för din fillagring:
version: '3.4'
volumes:
mysql_data:
driver: local
driver_opts:
type: nfs
o: addr=[FQDN],rw,vers=4.2
device: ":/dpool/nfs/mysql-data"
services:
mysql:
image : mysql
deploy:
replicas: 1 #Bara en replica för att undvika krockar
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- type: volume
source: mysql_data
target: /var/lib/mysql
volume:
nocopy: true #Om du inte anger nocopy kommer innehållet i containern att kopieras över till volymen och det vill du nog inte.
Deploya detta med:
docker stack deploy DockerizedApplication --compose-file docker-compose.yml
Kolla så att allt funkar med:
docker service logs -f DockerizedApplication_mysql
Svårare än såhär är det inte att komma igång med GleSYS Fillagring och Docker.
Kontakta oss gärna för mer information. Vi hjälper dig att komma fram till den bästa lösningen för dina behov.