Just had the pleasure of installing my first UCS on dedicated hardware to (hopefully) serve me well the coming years.
Unfortunately, I was stubborn and installed UCS on a btrfs root partition despite the installer’s warning. At that point I was thinking I was going to add a data partition later anyway with a different filesystem to store all VM’s and docker images.
After some research I learned about the ‘overlay’ storage driver UCS uses by default (why has UCS not switched to ‘overlay2’ by the way, as recommended by Docker?) and it’s incompatibility with btrfs.
So I figured if I could just change the ‘overlay’ storage driver to ‘btrfs’ (as described here: https://docs.docker.com/storage/storagedriver/btrfs-driver/), everything would be fine.
Little did I know UCS calls the docker binary with flags, so the proposed workaround I found in the link above does not work:
Aug 28 21:56:59 simba dockerd[12883]: unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: storage-driver: (from flag: overlay, from file: btrfs)
I spent the following hours trying to find out where UCS stores the docker startup settings so I can edit the flags, and after much digging I discovered the amazing UCR where I was able to change ‘overlay’ to ‘btrfs’.
However, when trying to install and app (i.e. Nextcloud) from the App Center, it fails:
File "/usr/lib/python2.7/dist-packages/univention/appcenter/docker.py", line 220, in root_dir
self._root_dir = self.inspect_container()['GraphDriver']['Data']['MergedDir']
TypeError: 'NoneType' object has no attribute '__getitem__'
So my obvious question are
- Is the error above in fact related to Docker running on the btrfs driver?
- If so, are there any Docker storage drivers which will work with UCS, besides the (according to Docker, almost deprecated) ‘overlay’?
- Are there any more problems I can expect by running on btrfs, or should everything work fine if I mount storage with a supported filesystem to /var/lib/docker (as per the Docker docs)?
Thanks in advance!