In the placement section of the compose file, you can specify constraints. I'd recommend using node labels so you can add more potential nodes (should an existing node fail) without redefining any deployments bound to a node, but you can also specify hostnames. The result looks like:
Snaps are a layer of isolation, similar to containers, that prevent access to the entire host filesystem. User home directories are mounted into the snaps which gives you access to those folders. If you were to install docker outside of a snap, you should have access to mount other host directories into the container.