Mijn vraag
Sinds kort ben ik bezig met het implementeren van Docker op mijn werk. Zo heb ik gisteren een SQL Server 2017 Express container geconfigureerd. Daarbij was de voornaamste uitdaging (voor mij) om makkelijk te kunnen backuppen naar en restoren van een externe bron.
De manier die ik daarvoor heb gebruikt, is het maken van een Docker volume dat een NFS share kan mounten:
En dan de SQL Server 2017 Express container:
Het voordeel van het gebruiken van een Docker volume, is dat de NFS share door Docker gemount wordt zodra de container gestart wordt. Docker zorgt er dus voor dat de share beschikbaar is voor SQL Server.
Dit werkt allemaal prima, maar wat ik mij nu afvraag, is het volgende:
Wat is de beste manier om hiermee door te gaan zodra ik meerdere containers heb die toegang hebben tot dezelfde server?
Daarmee bedoel ik niet per se dat ze in elkaars vaarwater komen en dezelfde bestanden bewerken op hetzelfde moment, maar dat bijvoorbeeld 30 containers allemaal een NFS mount hebben naar bijvoorbeeld dezelfde backup directory op een NAS.
Geeft dit problemen? Zijn er dingen waar ik rekening mee moet houden?
Of nog beter: wat zijn de best practices hiervoor?
Er zijn namelijk ook mensen die bijvoorbeeld op de host een NFS share mounten en die simpelweg binden aan hun containers. Een Docker volume lijkt mij echter netter werken.
Dus ik hoop dat hier ervaringsdeskundigen zitten die mij tips kunnen geven over wat de beste manier is om hiermee om te gaan.
Want in principe zal ik meer containers aanmaken in de toekomst (voor SQL Server 2017, 2019, Postgres, enzovoorts) en voor veel van die dingen zal gelden dat er op een eenvoudige manier - op applicatieniveau - gegevens ingelezen en geëxporteerd kunnen worden.
Zoals bij SQL Server dus ook. Even snel een backup maken van een database voordat je een potentieel gevaarlijke query uitvoert, of bijvoorbeeld makkelijk een klantdatabase kunnen inlezen om te kijken wat ermee aan de hand is. Die kan ik nu eenvoudig op de NAS parkeren en vervolgens restoren. Dat soort dingen.
Relevante software en hardware die ik gebruik
Meestal (virtuele) Ubuntu of Debian Linux met Docker er op.
Wat ik al gevonden of geprobeerd heb
Ik vind allerlei manieren om het op te lossen, maar ik vind het lastig te beoordelen wat nou het verstandigste is.
Kortom:
1. Volume mounts gebruiken per container naar dezelfde directory
2. Volume mounts gebruiken per container naar elk hun eigen directory (klinkt goed)
3. Bind mounts gebruiken naar een enkele NFS mount op de Docker host
4. Containers extra rechten geven zodat ze zelf NFS kunnen mounten (slecht idee)
Optie 2 lijkt me eigenlijk de beste. Maar door mijn onervarenheid met de materie (eigenlijk NFS), vraag ik om advies
Niet dat ik straks op mijn werk 30 containers heb draaien met NFS mounts naar dezelfde netwerk storage en er onverwachte dingen gaan gebeuren.
Wat zijn jullie ervaringen (en uitdagingen geweest) en wat zijn de best practices?
Docker documentatie is daar wat vaag in (of ik lees erover heen). Ze leggen vaak uit hoe iets kan, maar niet per se of dat ook verstandig is.
Alvast bedankt.
Sinds kort ben ik bezig met het implementeren van Docker op mijn werk. Zo heb ik gisteren een SQL Server 2017 Express container geconfigureerd. Daarbij was de voornaamste uitdaging (voor mij) om makkelijk te kunnen backuppen naar en restoren van een externe bron.
De manier die ik daarvoor heb gebruikt, is het maken van een Docker volume dat een NFS share kan mounten:
code:
1
2
3
4
5
6
| sudo docker volume create \ --driver local \ --opt type=nfs \ --opt o=addr=192.168.168.50,rw \ --opt device=:/volume1/backup \ nasbackup |
En dan de SQL Server 2017 Express container:
code:
1
2
3
4
5
6
7
8
9
10
| sudo docker run \ -e 'ACCEPT_EULA=Y' \ -e 'SA_PASSWORD=************' \ -e 'MSSQL_PID=Express' \ --mount type=bind,source=/srv/sql2017,destination=/var/opt/mssql \ --mount type=volume,source=nasbackup,destination=/backups \ -p 1433:1433 \ --hostname app1 \ --name sql2017 \ -d mcr.microsoft.com/mssql/server:2017-latest |
Het voordeel van het gebruiken van een Docker volume, is dat de NFS share door Docker gemount wordt zodra de container gestart wordt. Docker zorgt er dus voor dat de share beschikbaar is voor SQL Server.
Dit werkt allemaal prima, maar wat ik mij nu afvraag, is het volgende:
Wat is de beste manier om hiermee door te gaan zodra ik meerdere containers heb die toegang hebben tot dezelfde server?
Daarmee bedoel ik niet per se dat ze in elkaars vaarwater komen en dezelfde bestanden bewerken op hetzelfde moment, maar dat bijvoorbeeld 30 containers allemaal een NFS mount hebben naar bijvoorbeeld dezelfde backup directory op een NAS.
Geeft dit problemen? Zijn er dingen waar ik rekening mee moet houden?
Of nog beter: wat zijn de best practices hiervoor?
Er zijn namelijk ook mensen die bijvoorbeeld op de host een NFS share mounten en die simpelweg binden aan hun containers. Een Docker volume lijkt mij echter netter werken.
Dus ik hoop dat hier ervaringsdeskundigen zitten die mij tips kunnen geven over wat de beste manier is om hiermee om te gaan.
Want in principe zal ik meer containers aanmaken in de toekomst (voor SQL Server 2017, 2019, Postgres, enzovoorts) en voor veel van die dingen zal gelden dat er op een eenvoudige manier - op applicatieniveau - gegevens ingelezen en geëxporteerd kunnen worden.
Zoals bij SQL Server dus ook. Even snel een backup maken van een database voordat je een potentieel gevaarlijke query uitvoert, of bijvoorbeeld makkelijk een klantdatabase kunnen inlezen om te kijken wat ermee aan de hand is. Die kan ik nu eenvoudig op de NAS parkeren en vervolgens restoren. Dat soort dingen.
Relevante software en hardware die ik gebruik
Meestal (virtuele) Ubuntu of Debian Linux met Docker er op.
Wat ik al gevonden of geprobeerd heb
Ik vind allerlei manieren om het op te lossen, maar ik vind het lastig te beoordelen wat nou het verstandigste is.
Kortom:
1. Volume mounts gebruiken per container naar dezelfde directory
2. Volume mounts gebruiken per container naar elk hun eigen directory (klinkt goed)
3. Bind mounts gebruiken naar een enkele NFS mount op de Docker host
4. Containers extra rechten geven zodat ze zelf NFS kunnen mounten (slecht idee)
Optie 2 lijkt me eigenlijk de beste. Maar door mijn onervarenheid met de materie (eigenlijk NFS), vraag ik om advies
Niet dat ik straks op mijn werk 30 containers heb draaien met NFS mounts naar dezelfde netwerk storage en er onverwachte dingen gaan gebeuren.
Wat zijn jullie ervaringen (en uitdagingen geweest) en wat zijn de best practices?
Docker documentatie is daar wat vaag in (of ik lees erover heen). Ze leggen vaak uit hoe iets kan, maar niet per se of dat ook verstandig is.
Alvast bedankt.
Ask yourself if you are happy and then you cease to be.