Docker volume orchestration

Revision as of 23:07, 30 August 2018 by Adam (talk | contribs) (Futtatás a háttérben)

Revision as of 23:07, 30 August 2018 by Adam (talk | contribs) (Futtatás a háttérben)

Áttekintés

NFS mount

Netshare

Bemutatás

http://netshare.containx.io/

ClipCapIt-180830-002410.PNG

Mount NFS v3/4, AWS EFS or CIFS

Mesos/Marathon and Docker Swarm

Installálás a boot2docker VM-en

Fontos, hogy csak a /var/lib/boot2docker a perzisztens mappa.

docker@mg0:~$ cd /var/lib/boot2docker
docker@mg0:~$ sudo wget https://github.com/ContainX/docker-volume-netshare/releases/download/v0.35/docker-volume-netshare_0.35_linux_amd64.tar.gz

docker@mg0:~$ sudo tar -xvzf docker-volume-netshare_0.35_linux_amd64.tar.gz
docker@mg0:~$ sudo mv docker-volume-netshare_0.35_linux_amd64 netshare
docker@mg0:~$ cd netshare/


ImportantIcon.png

Note
A boot2docker csak az nfs3 protokollt támogatja, ezért fontos, hogy a netshare indításakor megadjuk az nfs verziót, különben az nfs4-et fogja elindítani, ami boot2docker alatt nem működik

$ sudo ./docker-volume-netshare nfs -v 3
INFO[0000] == docker-volume-netshare :: Version: 0.35 - Built: 2018-01-27T22:43:03-08:00 == 
INFO[0000] Starting NFS Version 3 :: options: '' 


Induláskor beírja magát ide: /run/docker/plugins, ezért nem kell külön docker plugin-ként telepíteni.

# docker-machine ssh mg0 sudo ls /run/docker/plugins
nfs.sock

Docker standalone

# docker run -i -t --name ubuntu --volume-driver=nfs -v 192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data/:/data ubuntu /bin/bash
root@5e82828c7a37:/#
...
INFO[0060] Mounting NFS volume 192.168.42.1:/home/adam/Projects/DockerCourse/persistentstore/portainer/data/ on /var/lib/docker-volumes/netshare/nfs/192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data 
...


root@5e82828c7a37:/# ls /data
adam


# docker rm -f ubuntu
...
INFO[0388] Unmounting volume name 192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data/ from /var/lib/docker-volumes/netshare/nfs/192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data 
...

Volume létrehozása

Swarm service

docker service create \
--name portainer \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role == manager' \
--mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=volume,src=192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data/,dst=/data,volume-driver=nfs \
portainer/portainer -H unix:///var/run/docker.sock
# docker volume ls
DRIVER              VOLUME NAME
nfs                 192.168.42.1/home/adam/Projects/DockerCourse/persistentstore/portainer/data/
WarningIcon.png

Warning
Valami olyat vettem észre, hogy ha swarm service-ként is fel van csatolva egy mappa, akkor azt nem lehet egy standalone swarm konténerbe is felcsatolni: failed: Device or resource busy

Viszont még egy VM-en belül is, akár több konténerhez is fel lehet ugyan azt csatolni


Futtatás a háttérben

sudo chmod 777 /var/lib/boot2docker/profile
sudo echo 'cd /var/lib/boot2docker/netshare' >> /var/lib/boot2docker/profile
sudo echo 'sudo nohup ./docker-volume-netshare nfs -v 3 &' >> /var/lib/boot2docker/profile


A logokat a /var/log/boot2docker.log fájlba fogja írni, nem a nohup.out-ba.

ImportantIcon.png

Note
Ha újra indul a VM (és vele együtt a netshare) akkor az összes megosztás elveszik, tehát ha megpróbálnánk újra indítani a VM-en futó konténereket, akkor azok nem fogják megtalálni a volume-okat, vagyis a netshare nem fogja újra mount-olni az NFS mappákat. Az egyetlen megoldás, hogy VM reboot után újra telepítjük a konténereket/swarm service-eket.

... Lehet hogy ez docker service-re nem vonatkozik, meg kell nézni !!! ...


Convoy

REX-Ray

Trident