In fact it works little different. Imagine you need a database server, web server and some source code to run, for example, Wordpress blog engine. You should install MySQL to the server, properly configure it, create DB accounts for wordpress, create database. Then, you should install and configure web server, configure it with correct website root sources, DNS settings and to point on wordpress source code. Next, you should copy and unpack fresh source code from some where.
All this actions pollute your servers directories, settings in /etc folder, logs in /var/log folder and so on.
Docker “captures” changes on your file system, isolates your server from this changes and builds something like virtual folder structure. So when you deploy docker container it does not change /etc, /var/log, /usr and other folders, but runs entire wordpress web server + database + source code in “virtual” form. Even further, you can stop, remove, install updated container and your filesystem still will be clean! And that’s not finish, it does not matter, which linux operating system is on your host, CentOS, Debian, Ubuntu or CoreOS, your actions to run wordpress will be the same. In this case migration of entire website from one server to another is like a breeze.
As you can see Manager contains webserver, database and source code parts, but hides this components compiled in one package.