Dive into Docker: Kyle Wilcox, Shane StClair, Dave Foster, Axiom Data Science

Dive into Docker: Kyle Wilcox, Shane StClair, Dave Foster, Axiom Data Science

ESIP Tech Dive Presentation


ESIP Federation

June 09, 2016


  1. Kyle Wilcox Shane St.Clair Dave Foster Dive into Docker ESIP

    Interoperability and Tech Dive Webinar Series 6/9/2016
  2. • Founded in 2006 • 16 employees • Offices in

    AK, OR and RI • Datacenters in OR and RI ◦ 200+ bare-metal servers 2
  3. Pre 1960s Post 1960s 3 What is Docker? Docker containers

    wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in. - https://www.docker.com/what-docker
  4. VMs 4 Containers • Everything needed to run (self-sufficient) •

    Shared kernel vs VMs Images from https://www.docker.com/what-docker
  5. Build Package your application via Dockerfile Push To a Docker

    image registry 5 Lifecycle Run Regardless of hardware or OS docker build -t my_app . docker tag my_app my_group/my_app:latest docker push my_group/my_app docker run my_group/my_app:latest Users Creators
  6. Before Install • Spin up VM • Install system packages

    • Install specific Java version • Install specific Tomcat version • Drop in THREDDS/ ERDDAP WARs Upgrade • Download new WARs • Stop tomcat (what else did you bring down?) • Drop in THREDDS/ ERDDAP WARs • Start tomcat 6 Use Case - Us Now Install • Install docker • docker run --name thredds axiom/docker-thredds:4.6.4 • docker run --name erddap axiom/docker-erddap:1.64 Upgrade • docker stop thredds • docker run --name thredds axiom/docker-thredds:4.6.5 • docker stop erddap • docker run --name erddap axiom/docker-erddap:1.72
  7. Tomcat https://github.com/axiom-data-science/docker-tomcat FROM debian:jessie # Base image MAINTAINER Kyle Wilcox

    <kyle@axiomdatascience.com> # Author ... Other setup (take a look) ... EXPOSE 8080 8443 # Ports CMD ["catalina.sh", "run"] # Run THREDDS https://github.com/axiom-data-science/docker-thredds FROM axiom/docker-tomcat:8.0 # Base image MAINTAINER Kyle Wilcox <kyle@axiomdatascience.com> # Author ENV THREDDS_VERSION 4.6.5 ENV THREDDS_WAR_URL https://artifacts.unidata.ucar. edu/content/repositories/unidata- releases/edu/ucar/tds/$THREDDS_VERSION/tds-$THREDDS_VERSION.war RUN curl -fSL "$THREDDS_WAR_URL" -o thredds.war RUN unzip thredds.war -d $CATALINA_HOME/webapps/thredds/ # Install ncSOS COPY files/ncsos.jar $CATALINA_HOME/webapps/thredds/WEB-INF/lib/ncsos.jar # Default thredds config COPY files/threddsConfig.xml $CATALINA_HOME/content/thredds/threddsConfig.xml EXPOSE 8080 8443 CMD ["catalina.sh", "run"] 7 Dockerfile
  8. Before • Specialized servers ◦ bind9 ◦ nginx 00-01 ◦

    Geoserver 00-16 ◦ ncWMS 00-16 ◦ Postgres 00-04 ◦ etc. • Installed on bare-metal - difficult to transfer applications around • Inefficient use of resources - both under and over worked servers 8 Near future • Everything is a node • Doesn’t matter where it is running • DNS based application resolution ◦ someapp.axiomdocker:80 will always resolve to the application no matter where it is running or how many times it is moved. Use Case - Axiom
  9. GeoServer - https://github.com/kartoza/docker-geoserver Postgres/PostGIS - https://github.com/kartoza/docker-postgis THREDDS - https://github.com/axiom-data-science/docker-thredds ERDDAP

    - https://github.com/axiom-data-science/docker-erddap ncWMS2 - https://github.com/axiom-data-science/docker-ncwms pycsw - https://github.com/axiom-data-science/docker-pycsw 9 Existing images
  10. Demo 10

  11. Docker Swarm 11 Swarm binds many Docker Engines into a

    unified virtual Docker Engine host1 dockerd :2375 host2 dockerd :2375 host3 dockerd :2375 swarm
  12. Orchestration/Ecosystem Tools 12

  13. Just Scratching the Surface... https://medium.com/@svyangshuo/the-container-ecosystem-map-from-an-engineer-s-perspective-i-e-layer-cake-stack- bde36fcdff15#.vt6bua1i2 13