According to the systemd documentation, its PATH is set on compilation (see section "Command lines"):
If the command is not a full (absolute) path, it will be resolved to a full path using a fixed search path determinted at compilation time. Searched directories include /usr/local/bin/, /usr/bin/, /bin/ on systems using split /usr/bin/ and /bin/ directories, and their sbin/ counterparts on systems using split bin/ and sbin/. It is thus safe to use just the executable name in case of executables located in any of the "standard" directories, and an absolute path must be used in other cases. Using an absolute path is recommended to avoid ambiguity. Hint: this search path may be queried using systemd-path search-binaries-default.
The command to query the path on my Ubuntu 18.04 was
sudo systemd-path search-binaries (on Arch, it was
$ sudo systemd-path search-binaries
So, you have the following options:
The good: Edit the unit file so that it uses absolute paths. Assuming you have access to it, this is by far the best solution. It makes the file conform to the specification, it allows you to copy it to other machines, it even silences the warning messages.
The bad: Recompile
systemd from source, and change the path. This is time consuming, complicated and an all around bad idea unless you really know what you're doing. Even if you do, this seems like a bad solution. You're not going to be able to recompile
systemd every time you setup a new machine.
The ugly: If you really can't fix the unit file, you can always create a symlink in
/usr/bin pointing to
sudo ln -s /snap/bin/docker /usr/bin/docker