I'm wondering if go applications should or should not be deployed in containers (Docker)
Why should I deploy and run those binaries inside containers like Docker?
Can I deploy these servers together in one host running on different ports?
Actually, they could all run in their own container on their own port, even if that port is the same.
Intra-container communication will work, using EXPOSEd port. However, if they are accessed from outside, then their published port need to be different indeed.
What about scalibility and high availability without using Docker?
And what about the scalability and availability of using Docker?
As soon as you are talking about dynamic status, some kind of orchestration will be involved: see Docker Swarm or Kubernetes for efficient cluster management.
Both are available with the latest docker.