I am totally new to Docker and I like the concept of isolation of the different processes in different environment, mostly too the fact that you can test something in a container without polluting your base system. I am now planning to undergo the big project to move my home server towards a Docker setup.

My existing setup

  • Server running Ubuntu (with a DE for simplified setup, but I could give that up)
  • system installed on a single SATA SSD, 2 disks arrays (each of 3 disks, respecetively 4TB each and 3TB each, in Software Raid 5 using mdadm), mounted in /share and /share2.
  • Plex Media Server : some libraries are on one share, some on the other, the Plex data are also on the share
  • Samba Server : to share with the multiple Windows machine at home
  • Crashplan : used to back up the entirety of the 2 arrays
  • Insync : Used to sync my Google Drive on one of the share so I can also access locally through Samba
  • Web server : used for some small website testing
  • Network services : Transmission download station, SickRage, Unify Network Controller

The target

So, if I well got it, I should then use the following architecture :

  • Ubuntu as host OS (re-use the existing one, I'll have some cleaning to do though)
  • mdadm installed in the host OS (already there and all set up)
  • Docker host with the following containers
    • Samba Server
    • Plex Media Server
    • Crashplan
    • Insync
    • Web Server
    • Transmission
    • SickRage
    • Unify Network Controller

The inevitable questions

My questions are then :

  • Is the basic architecture right? (basically, did I get the way it works?)
  • Is the data going to be shared properly between the containers? For instance, I update a file through Samba, then Crashplan container back it up and Insync container sync it to the Google Drive. I saw that it should be OK but the different articles I found were always saying : run a container that changes the data, then run the second container, it sees the modified data. But the containers were not running together so I have a doubt here.
  • Now comes the tricky question concerning the transition. I found there (see second note) that we should not alter the data in the volume from the host otherwise it will corrupt. I will not be able to change all at once, I would like to implement one container, then when it runs OK, go for the next one, and so on. Am I screwed and I really need to prepare all container and phase in all at once?
  • Take a look at Kubernetes or other cluster orchestration tools, i.e. OpenShift, OpenStack. The containers are separated from each other. There are ways to configure that, but your question should be more focused and specific, IMHO. – ILMostro_7 Oct 4 '17 at 7:36
  • I am not talking about cluster, there is only one unique hardware server. Further search seems to point that my answer might lie in the volume versus bind-mount topic – Memes Oct 4 '17 at 7:49
  • On a single server host, docker compose will allow you to bring different containers in a "linked" cluster. If the application data is stored within the containers themselves, they will become "bloated" quickly. – Raman Sailopal Oct 4 '17 at 8:13
  • I was talking about the network data between containers; I hadn't realized you were primarily interested in sharing storage across multiple containers. The volume option sounds about right. stackoverflow.com/questions/25311613/… – ILMostro_7 Oct 4 '17 at 8:14
  • Did some test with 2 instances of the ubuntu container running, played around with a file from both containers as well as the host, seems so far that beside the usual permissions things (user not shared,...) everything works perfectly. I'll run some more test later. – Memes Oct 4 '17 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.