Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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
Tweet

More Decks by ESIP Federation

Other Decks in Technology

Transcript

  1. Kyle Wilcox
    Shane St.Clair
    Dave Foster
    Dive into Docker
    ESIP Interoperability and Tech Dive Webinar Series
    6/9/2016

    View full-size slide

  2. ● Founded in 2006
    ● 16 employees
    ● Offices in AK, OR and RI
    ● Datacenters in OR and RI
    ○ 200+ bare-metal servers
    2

    View full-size slide

  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

    View full-size slide

  4. VMs
    4
    Containers
    ● Everything needed to run (self-sufficient)
    ● Shared kernel
    vs VMs
    Images from https://www.docker.com/what-docker

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  7. Tomcat
    https://github.com/axiom-data-science/docker-tomcat
    FROM debian:jessie # Base image
    MAINTAINER Kyle Wilcox # 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 # 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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  10. Docker Swarm
    11
    Swarm binds many Docker Engines into a unified virtual Docker Engine
    host1
    dockerd :2375
    host2
    dockerd :2375
    host3
    dockerd :2375
    swarm

    View full-size slide

  11. Orchestration/Ecosystem Tools
    12

    View full-size slide

  12. 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

    View full-size slide