How does Docker container orchestration work? I am familiarizing with the architecture and practices to package, build and deploy software or unless, small pieces of software.

If suddenly I am mixing concepts with specific tools (sometimes is unavoidable), let me know if I am wrong, please.

On the road, I have been reading and learning about the images and containers terms and their respective relationships in order to start to build the workflow software systems of a better possible way. 

And I have a question about the services orchestration in the context of the docker :


The containers are lightweight and portable encapsulations of an environment in which we have all the binary and dependencies we need to run our application. OK
I can set up communication between containers using container links --link flag.  


I can replace the use of container links, with docker-compose in order to automate my services workflow and running multi-containers using .yaml file configurations.

And I am reading about of the Container orchestration term, which defines the relationship between containers when we have distinct "software pieces" separate from each other, and how these containers interact as a system.

Well, I suppose that  I've read good the documentation :P

My question is:

A docker level, are container links and docker-compose a way of container orchestration? 

Or with docker, if I want to do container orchestration ... should I use docker-swarm?
welcome to DevOps SE, @bgarcial!

Well I think there are the following options depending on the use case:


Docker Container links are a according to the vendor site a legacy feature and you shouldn't use it
Docker compose should work well but you can't scale horizontally: the stack is runnable only one a single machine
With Docker Swarm using mostly same YML you can distribute your containers across many machines
If you are going to deploy large scale production environments you might want to choose Kubernetes over Swarm, maybe have a look for example on Rancher/Kubernetes.