Its not clear from the documentation what is the difference between lxc start and lxc-start and the --help provides different usages and switches. Tutorials use both variants but delving into the documentation a bit deeper, it seems that lxc-start is suited for applications running inside the container whereas lxc start is for starting a container. Either way its not clear since it doesn't explain if the commands are links of one another or completely different. I am erring on the side of "they are different as in different binaries, different code paths, but eventually converge under the hood with a few modifications".
Documentation: http://manpages.ubuntu.com/manpages/bionic/man1/lxc-start.1.html
$ lxc-start --help
Usage: lxc-start --name=NAME -- COMMAND
lxc-start start COMMAND in specified container NAME
Options :
-n, --name=NAME NAME of the container
-d, --daemon Daemonize the container (default)
-F, --foreground Start with the current tty attached to /dev/console
-p, --pidfile=FILE Create a file with the process id
-f, --rcfile=FILE Load configuration file FILE
-c, --console=FILE Use specified FILE for the container console
-L, --console-log=FILE Log container console output to FILE
-C, --close-all-fds If any fds are inherited, close them
If not specified, exit with failure instead
Note: --daemon implies --close-all-fds
-s, --define KEY=VAL Assign VAL to configuration variable KEY
--share-[net|ipc|uts]=NAME Share a namespace with another container or pid
Common options :
-o, --logfile=FILE Output log to FILE instead of stderr
-l, --logpriority=LEVEL Set log priority to LEVEL
-q, --quiet Don't produce any output
-P, --lxcpath=PATH Use specified container path
-?, --help Give this help list
--usage Give a short usage message
--version Print the version number
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
See the lxc-start man page for further information.
Documentation: http://manpages.ubuntu.com/manpages/bionic/man7/lxc.7.html
$ lxc start --help
Usage: lxc start [<remote>:]<container> [[<remote>:]<container>...]
Start containers.
Options:
--debug (= false)
Enable debug mode
--force-local (= false)
Force using the local unix socket
--no-alias (= false)
Ignore aliases when determining what command to run
--stateful (= false)
Store the container state (only for stop)
--stateless (= false)
Ignore the container state (only for start)
--verbose (= false)
Enable verbose mode
From https://discuss.linuxcontainers.org/t/comparing-lxd-vs-lxc/24,
It states,