on-failureとalwaysの違いは終了ステータスが0のときも再起動するか否かで、終了ステータスが0のときは前者は再起動せず、後者は再起動する。
alwaysとunless-stoppedの違いはコンテナをdocker stopで手動で止めた場合にDocker daemonを再起動した場合で、前者は再起動するが後者は再起動しない。
on-failureに設定したコンテナのstatusがExitedの状態でDocker daemonを再起動した場合、 終了ステータスが0のコンテナは再起動しないが、0以外のコンテナは再起動する。