Server and client are ambiguous terms at best these days.
A "server" is typically an application that "serves up" ( gives out ) data.
A web server, a dhcp server, a database server, a virtual machine server, etc...
However you could have a virtual machine running a web server on your main host.
And even though the VM is a client on your host, the web server is still a server per se.
Docker doesn't "require" a REST API, but it depends on how the VM was created.
( Usually with a Dockerfile ). Usually you can access the VM via bash exec.
In the example above, there is a REST API between the Docker server and the docker container,
but usually that is transparent to you, and you can telnet or ssh to your container ( again depending on how
it was created and what services are running inside it ).