To me it seems clean. It's simple and easy to understand.
You can use docker input for collecting logs of Docker. But it's an experimental feature: https://www.elastic.co/guide/en/beats/filebeat/6.3/filebeat-input-docker.html
It support docker specific use cases much better than log. For example on master combine_partial option is available which makes it possible to aggregate partial logs sent by Docker into one message.