“containerizing” applications with docker: ecosystem and tools

22
The Enterprise Software & Support Company The Enterprise Software & Support Company “Containerizing” Applications: Ecosystem and Tools #OpenExpo2016 [email protected]

Upload: francisco-javier-ramirez-urea

Post on 22-Jan-2018

227 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: “Containerizing” applications with Docker: Ecosystem and Tools

The Enterprise Software & Support CompanyThe Enterprise Software & Support Company

“Containerizing” Applications:

Ecosystem and Tools

#OpenExpo2016

[email protected]

Page 2: “Containerizing” applications with Docker: Ecosystem and Tools

● Javier Ramírez UreaSenior Consultant

Dockerized at HoplaSoftware

[email protected]

Page 3: “Containerizing” applications with Docker: Ecosystem and Tools

“Containerizing” Applications: Ecosystem and Tools

● Building Microservice Applications with Containers

● Container’s Ecosystem

● Building Images

● Operating Systems

● Storage & Backup

● Networking

● Security

● Clustering & Scheduling

● Dynamic Services

● Monitoring & Logging

● Provisioning & Configuration Management

Page 4: “Containerizing” applications with Docker: Ecosystem and Tools

Building Microservice Applications with Containers

Page 5: “Containerizing” applications with Docker: Ecosystem and Tools

Use the Force Luke!!!

Page 6: “Containerizing” applications with Docker: Ecosystem and Tools

Building Images

• Smaller is better

• Expose only what is really needed

• Don’t daemonize, unless required.

Page 7: “Containerizing” applications with Docker: Ecosystem and Tools

Operating Systems

• Host Nodes• Well known supported OSes

• “Container Specific Deployers”

• Containers

Page 8: “Containerizing” applications with Docker: Ecosystem and Tools

Storage & Backup

• StorageEphemeral Storage or Persistent Storage

✔ Runtime✔ Configuration✔ Data✔ Multihost

• Backup/Restore/Snapshot

Page 9: “Containerizing” applications with Docker: Ecosystem and Tools

Networking

• Docker Standard Drivers:• None• Host• Container• Bridge• Overlay

• Linking between containers

• Macvlan and Ipvlan Network Drivers (beta)

• Extending the daemon with plugins

Page 10: “Containerizing” applications with Docker: Ecosystem and Tools

Security

• Daemon• socket• TLS

• Containers• Namespaces• Control groups• Linux kernel capabilities• Hardened Kernel• Linux Security Modules

• Images• Use Trusted Images• Manage Dockerfiles and Image Components

vulnerabilities

Page 11: “Containerizing” applications with Docker: Ecosystem and Tools

Clustering & Scheduling

• Swarm

• Fleet

• Kubernetes

• Mesos

Page 12: “Containerizing” applications with Docker: Ecosystem and Tools

Dynamic Services

• Consumer, Proxy and Provider model.• Key/Value Store Backends

• Zookeeper• Etcd• Consul

• Registration• Registrator

• Dynamic Configuration• Confd• Consul Template

• Process Control• Supervisord

Page 13: “Containerizing” applications with Docker: Ecosystem and Tools

Monitoring & Logging

• Statistics• Online• Capacity Planning

• Container’s Health vs Service’s Health

• Logging• Engine vs Container • Use /dev/stdout and /dev/stderr on container.

Page 14: “Containerizing” applications with Docker: Ecosystem and Tools

Provisioning & Configuration Management

• Convergency

• Inmutable Infrastructure

Page 15: “Containerizing” applications with Docker: Ecosystem and Tools

Unix Zen

Write programs that do one thing and do it well

Write programs to work together

- Peter H. Salus -

Page 16: “Containerizing” applications with Docker: Ecosystem and Tools

Conclusions

• Do we really need just “The Holy Grail Tool”?

• Or a set of tools that best match our environment

Page 17: “Containerizing” applications with Docker: Ecosystem and Tools

Conclusions

• Get close to Open Container Initiative

Page 19: “Containerizing” applications with Docker: Ecosystem and Tools

References

• Docker Docs - https://docs.docker.com/• Operating Systems

• Alpine Docker Containers Examples - https://github.com/smebberson/docker-alpine• Storage

• Flocker - https://clusterhq.com/flocker• Convoy - https://github.com/rancher/convoy• Contiv - https://github.com/contiv/volplugin• Netshare - http://netshare.containx.io• NetApp - https://github.com/NetApp/netappdvp

• Networking• Docker Macvlan and Ipvlan -

https://github.com/docker/docker/blob/master/experimental/vlan-networks.md• Contiv - https://github.com/contiv/netplugin• Weaveworks - https://github.com/weaveworks• Openvswitch - https://github.com/openvswitch/ovs/blob/master/INSTALL.Docker.md

Page 20: “Containerizing” applications with Docker: Ecosystem and Tools

References

• Security Vulnerabilities Scanning• Clair - https://github.com/coreos/clair• Nautilus aka. Docker Security Scan - https://docs.docker.com/docker-cloud/builds/image-scan

• Clustering and Scheduling• Swarm - https://docs.docker.com/swarm• Fleet - https://coreos.com/using-coreos/clustering• Kubernetes - http://kubernetes.io• Mesos - http://mesos.apache.org• Marathon - https://mesosphere.github.io/marathon• Mesosphere - https://mesosphere.github.io

• Dynamic Services• Consul - https://www.consul.io• Etcd - https://coreos.com/etcd• Zookeeper - https://zookeeper.apache.org• Registrator - https://github.com/gliderlabs/registrato• Confd - https://github.com/kelseyhightower/confd• Consul Template - https://github.com/hashicorp/consul-template• Supervisord - http://supervisord.org

Page 21: “Containerizing” applications with Docker: Ecosystem and Tools

References

● Monitoring, Statistics and Logging• Docker stats - https://docs.docker.com/engine/reference/commandline/stats• Collectd - https://collectd.org• cAdvisor - https://github.com/google/cadvisor• InfluxDB - https://influxdata.com• Redis - http://redis.io• Grafana - http://grafana.org• Prometeus - https://prometheus.io• Sysdig - http://www.sysdig.org• Icinga - https://www.icinga.org• Nagios - https://www.nagios.org• Sensu - https://sensuapp.org• Fluentd - http://www.fluentd.org• Logstash - https://github.com/elastic/logstash• Syslog-ng - https://syslog-ng.org

Page 22: “Containerizing” applications with Docker: Ecosystem and Tools

References

● Provision and Configuration Management• Docker Machine - https://docs.docker.com/machine• Vagrant - https://www.vagrantup.com/• Puppet - https://github.com/puppetlabs/puppet• Ansible - https://github.com/ansible/ansible• Chef - https://www.chef.io

● Opencontainers Initiative - https://www.opencontainers.org