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
- 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
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
- Web Server
- 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?