Share nfs volume docker swarm


//Docker stack

version: "3.7"
services:
  web:
    image: nginx
    volumes:
      - nginx.vol:/usr/share/nginx/html
    ports:
      - 80:80
    networks:
      - web

networks:
  web:
    driver: overlay
    name: web

volumes:
  nginx.vol:
    driver: local
    driver_opts:
      type: "nfs"
      o: addr=192.168.0.13,nolock,soft,rw
      device: ":/media/fdisk"


// nfs setting /etc/exports

/media/fdisk *(rw,insecure,sync,no_subtree_check,no_root_squash)


I had problem with nfs share if i use vfat partition, and i change to ext4 for partition usb fdisk and now all volumen working properly (dont forget to change media share to 777 if you have problem to read and write)

Source :

https://pimylifeup.com/raspberry-pi-nfs/

https://sysadmins.co.za/docker-swarm-persistent-storage-with-nfs/

https://linuxize.com/post/how-to-mount-an-nfs-share-in-linux/

https://serverfault.com/questions/212178/chown-on-a-mounted-nfs-partition-gives-operation-not-permitted

Membuat docker hub di lokal server


Buat Folder yang nantinya akan menampung semua setingan docker kita, disini saya akan memberikan nama docker-registry

didalam docker-registry saya akan membuat dua folder lagi yaitu folder certs dan data, certs sendiri akan menampung sertifikat opensll dan data akan menampung image dari docker yang kita push ke lokal server kita

langkah pertama buat sertifikat openssl dengan cara dibawah ini didalam folder certs

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

kemudian buat file docker-compose.yml dan isi seperti dibawah ini

version: '3'

services:
  registry:
    image: registry:2
    restart: always
    ports:
    - "5000:5000"
    environment:
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
      REGISTRY_HTTP_TLS_CERTIFICATE: /opt/certs/ca.crt
      REGISTRY_HTTP_TLS_KEY: /opt/certs/ca.key
    volumes:
      - ./data:/data
      - ./certs:/opt/certs

Setelah selesai jalankan docker-compose up maka server lokal docker hub kita akan jalan di 0.0.0.0:5000, kemudian untuk mengetes apakah server docker ini sudah bisa digunakan kita bisa test dengan cara pull docker dari docker hub kemudian coba push ke server docker kita dengan cara seperti dibawah ini

dockur pull nginx

setelah itu coba tag ke localhost:5000 dengan cara

docker tag nginx localhost:5000/nginx-edit

setelah itu coba push ke localhost:5000 dengan cara

docker push localhost:5000/nginx-edit

kalau berhasil maka bisa kita lihat didalam data 
kalau docker yang sudah kita push masuk kesitu

Sekian tutorial kali ini selamat mencoba

Salam Ngoprek …