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

1bfb948b87cd5766db6ceac17d854d62?s=128

ESIP Federation

June 09, 2016
Tweet

Transcript

  1. 1.

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

    Interoperability and Tech Dive Webinar Series 6/9/2016
  2. 2.

    • Founded in 2006 • 16 employees • Offices in

    AK, OR and RI • Datacenters in OR and RI ◦ 200+ bare-metal servers 2
  3. 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. 4.

    VMs 4 Containers • Everything needed to run (self-sufficient) •

    Shared kernel vs VMs Images from https://www.docker.com/what-docker
  5. 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. 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. 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. 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. 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. 10.
  11. 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