Conceptually a service and a container are completely different things.
- A container is a standardised wrapper around an isolated process.
- A service is a mechanism to provide access to capabilities (running software) via a formal interface.
Further, in docker-compose, a service can have 0..n instances, where n defaults to 1 and can be overridden. Access over HTTP will be load-balanced by compose and services will be registered in a registry that allows other services to look them up by name for access (dns).
There are other differences, such as the default placement of services on a shared network. And, another difference is that compose is declarative where 'docker run' is imperative. There is a strong preference in the industry for the former.