Docker cannot write to devices.allow

Hi there! I’m not sure if this helps you out, but I fired up a lxd instance on my system this evening to test the mailcow deployment. It went pretty smoothly, so hopefully my experiences can help you get it deployed similarly.

The entirety of my deployment is at https://asciinema.org/a/yfaU6Gc5aRuASglBC38wtriR3

I had to run a privileged base lxd container to get this working correctly, though, so keep that in mind from a security perspective.

What isn’t shown in that asciinema output, is when I created my docker profile. I did that with lxc profile copy default docker and then edited with lxc profile edit docker adding the raw.lxc configuration as follows:

config:
  raw.lxc: |-
    lxc.aa_profile = unconfined
    lxc.cgroup.devices.allow = a
    lxc.mount.auto=proc:rw sys:rw
    lxc.cap.drop=

When you deploy the lxd instance, make sure you enable the configuration settings that allow Docker to run embedded, which are security.nesting=true and security.privileged=true.

You can do this at lxc launch time with the -c flag or after-the-launch with a combination of:

lxc config set mailcow security.nesting true
lxc config set mailcow security.privileged true
lxc restart mailcow

Good luck, and I hope you manage to get everything working as expected.

Cheers,

  • Andrew

3 Likes