A screwdriver seems like an anti-pattern when you are trying to hammer in a nail with it. Because of the buzz around it Docker suffers from people trying to use it to solve problems it wasn't intended to.
I use both Docker and LXC but for very different use cases. I find both to be great tools when used to solve the problems they were intended for.
Lxc is a system container
Docker is an application container.
Use lxc in place of a VM, where you might want to login or even have others login. It has the same problem as a regular system, snowflakes. Changes can be made that might cause an application to behave differently if there are multiple deployments or you have to rebuild.
Docker is for having a consistent application environment so your app behaves exactly the same every time it's deployed.
I use lxc and did before docker. It took a while for me to accept docker. It takes understanding the difference.
The fact that there are so many base images including an init system and even Docker now includes a small init that you can activate with a command line switch might give an indication that many people are using Docker for "system containers".
if you’re looking at the kernel features used (namespaces, cgroups, etc) containers are multiprocess (even with docker you can go attach into the container and look at things).
This may be semantics, but the first process in the container is an “init” regardless if it’s a proper init or just a process.
As far as light-weight VMs: containers are supposed to be lightweight VMs (But defining lightweight can be challenging)
let's agree to disagree on this one. I am not sure that system and application container are or should be different, but it's okay if we have a different opinion.
Without giving us a hint of what those anti-patterns are, your comment is quite useless. There seems to be tacit agreement among most participants of this discussion that both Docker and LXC have their place, for different use cases. You seem to be saying something different. Could you elucidate?