Deploying Rails with Kubernetes

Size: px
Start display at page:

Download "Deploying Rails with Kubernetes"

Transcription

1

2 Deploying Rails with Kubernetes AWS Edition Pablo Acuña This book is for sale at This version was published on This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and many iterations to get reader feedback, pivot until you have the right book and build traction once you do Pablo Acuña

3 Contents Acknowledgments Preface Prerequisites Conventions i ii ii ii Development Setting up the Development Environment Ruby/Rails installation Installing Docker Creating a new Rails App Dockerizing the Application Dockerfile webapp.conf docker-compose.yml Adding a resource Adding a production-ready database Adding a Search Engine

4 Acknowledgments I d like to thank all of the people that for any reason have taken part in my learning journey. Especially Becky, for always being there for me and supporting all of my ambitions. i

5 Preface Prerequisites I expect you to have a medium knowledge about Docker and its workflow. It s OK if you have never worked with Docker in a production environment. Since this is a book about deploying Ruby on Rails, you should also have a medium to advanced Rails knowledge. I won t explain basic things about Ruby or Rails. We are going to work with Postgres as our Database and Elasticsearch as our search engine. You don t need previous knowledge about any of these two. The main focus it s going to be on how to create the connexions between our application and these type components. Conventions Navigating between the different layers when you re running containers, specially if you are running Docker inside of a Virtual Machine, can become a little messy. You need to know where you are at every moment. In order to not pollute all of the code with explanations, I ll be using the following conventions: Every line that starts with the $ symbol, means that the command should be run at same same level where Docker is installed. That can be your local machine, or the Virtual Machine where you have your Docker host running. Every line that starts with the # symbol, means that the command should be run inside of a container. Every line that stats with the > symbol, means that the command should be run inside of the Rails console. Sometimes you ll see all the symbols in action so you can have more context. For example: 1 $ docker exec -it myapp bash 2 # rails c 3 > puts 'hello world!' A special case will be to run commands on a remote host. In that case I ll still be using the $ command but it s going to be pretty clear that the commands should be run on the remote host. ii

6 Development In this chapter we will create and dockerize a fresh Rails 5 application. We are going to use production-ready images so we can test the production setup locally before run it in production. That s one of the best advantages of using Docker. We can simulate a similar production environment and that way make sure that all is going to work as a long as we use the same images and versions for the software. The application that we are going to build will be just a regular Rails application with some scaffolds. This application will be connected to a Database and a Search Engine which in this case are going to be Postgres and Elasticsearch. We are not adding to much complexity to the application logic because is not as relevant as the setup for connecting all of the different elements in the architecture and the deployment workflow. This workflow will go from pushing new features to DockerHub to deploying new releases to a staging environment and finally to production. Setting up the Development Environment The only requirements for this part of the book, are Ruby/Rails and Docker. We need Ruby and Rails for creating a new application and Docker for running the application. Ruby/Rails installation If you don t have a recent version of any of these, I recommend you to use some Ruby version manager such as rbenv¹ or rvm². Any of those should work for the Ruby version we need, which in this case is 2.3.0dev. Although any version equal or higher than should work. We also need Rails installed in our system so we can create a fresh application. A couple of days ago the first Rails 5 rc version was released, so I ll be using that one. After setting up your Ruby version, you can use the gem install command and install the most recent version for Rails 5. For example in my case I used: 1 $ gem install rails --version rc1 --no-ri --no-rdoc in order to get the current latest version. ¹ ² 1

7 Development 2 Installing Docker Today we have several options for running Docker. If you re on OS X you can use Docker Machine³, Docker for Mac⁴ which is only available through invitation at the moment but maybe you re reading this when it s already out. You can also run a Linux Virtual Machine and run native Docker. For windows you have the same options and for Linux you can enjoy the best experience with native Docker without any sort of virtualization. Any of these should work, just check that you re using the latest version for Docker and for Docker Compose. In my case I m running Docker version , build 5604cbe and docker-compose version 1.7.1, build 0a9ab35. That s really important since some of the features like networking are only available in the recent versions. Creating a new Rails App I have the latest Rails version (Rails rc1) and Ruby 2.3.0dev version. Let s create a new Rails application: 1 $ rails new myapp We are not using any options by now. We ll be adding more features and dependencies progressively. If you run rails s you should be able to see the application running locally on Dockerizing the Application Luckily for us, dockerize a Rails app it s pretty straightforward if you use the awesome Phusion Passenger Docker image. This image will provide us with a production-ready server for running our application and some other features we will need. In this book I ll show the basics of how to use this image, and if you want to learn more you can go to the official GitHub Repo⁵. They have a very nice documentation for the project. First, we are going to need some extra files. Let s create these files in the root of our project: 1 $ touch Dockerfile docker-compose.yml webapp.conf You should be familiarize with what the Dockerfile and docker-compose.yml files do. The webapp.conf will contain the virtual host for our application. This file will also be added to the Nginx configuration during the build process. Dockerfile Add the following template to the Dockerfile: ³ ⁴ ⁵

8 Development 3 1 FROM phusion/passenger-ruby # Set correct environment variables. 4 ENV HOME /root 5 6 # Use baseimage-docker's init process. 7 CMD ["/sbin/my_init"] 8 9 # additional packages 10 RUN apt-get update # Active nginx 13 RUN rm -f /etc/service/nginx/down # Install bundle of gems 16 WORKDIR /tmp 17 ADD Gemfile /tmp/ 18 ADD Gemfile.lock /tmp/ 19 RUN bundle install # Copy the nginx template for configuration and preserve environment variables 22 RUN rm /etc/nginx/sites-enabled/default # Add the nginx site and config 25 ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf RUN mkdir /home/app/webapp 28 COPY. /home/app/webapp 29 RUN usermod -u 1000 app 30 RUN chown -R app:app /home/app/webapp 31 WORKDIR /home/app/webapp # Clean up APT when done. 34 RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 35 EXPOSE 80 I ve added comments to every line so you can understand better how this Dockerfile works. For example on these lines: 1 # Add the nginx site and config 2 ADD webapp.conf /etc/nginx/sites-enabled/webapp.conf we are adding the virtual host to the Nginx configuration folder. The rest of the file is pretty self explanatory. We are using a lot of code presented in the official documentation, so nothing too hacky happening here. One thing to notice although is that you want to set the correct permissions for your application. The passenger user has the uid 1000, so all of the chmod and chown commands you see in the Dockerfile are setting the permissions for the application files. We are also running bundle install before copying the entire application into the container in order to have an extra cache

9 Development 4 layer for the gems. This way, the bundle install command will only be run when you actually make changes to the Gemfile. webapp.conf The virtual host configuration can be as simple as: 1 server { 2 listen 80; 3 server_name _; 4 root /home/app/webapp/public; 5 passenger_enabled on; 6 passenger_user app; 7 passenger_ruby /usr/bin/ruby2.2; 8 } We just need to enable passenger for managing our Ruby application from Nginx. docker-compose.yml We just have our application, so let s add a block for building it from our source: 1 webapp: 2 build:. 3 container_name: myapp 4 working_dir: /home/app/webapp 5 ports: 6 - "80:80" 7 environment: 8 - PASSENGER_APP_ENV=development 9 volumes: 10 -.:/home/app/webapp The only environmental variable we need for now is the PASSENGER_APP_ENV variable. This variable is preserved by default and it will indicate the Rails environment in which the container will be running. For now we are in development mode, so we have to declare development for its value. We are also adding a volume in case you want to work locally and you don t want to rebuild your application every time you make changes to your code. Keep in mind that depending on how you re running Docker (natively, with Vagrant, with Docker Machine, etc) you may have to set the correct permissions on the shared folder so you don t lose the permissions for the passenger user. Now, we can build our application with docker-compose. My Docker version is , build 5604cbe and my docker-compose version is 1.7.0, build 0d7bf73. Let s build the app:

10 Development 5 1 $ docker-compose build This can take several minutes the first time since the command will pull the necessary images from DockerHub, update the Linux OS of the container and install the gems. Once it finished, you can run the build again and see that is a lot more faster. Now we can run the application by running: 1 $ docker-compose up Now depending of what you re using for running Docker you cant visit your VM IP address or your Dockerhost address and should be able to see your application running on the port 80. That s great! We our Rails app dockerized. Adding a resource Now that we have our application up and running, let s scaffold a resource so later we can test more than just the Rails welcome page. The application is running inside of the phusion passenger container, and we have two options for interacting with the application. The first option is to run commands by using docker-compose as a wrapper. For example we could run: 1 $ docker-compose run webapp rails c And that would take us to the webapp service defined in our docker-compose which corresponds to the myapp application, and open a rails console inside of it. The second option would be to create a bash session inside of the container and run the commands directly there. For example: 1 $ docker exec -it myapp bash 2 # rails c The first command takes you to the container and from there you can run any rails or rake commands you want. I prefer to use the second approach simply because using docker-compose for running commands will create containers for running everyone of these commands, and those containers will stay there using disk space. You can see this by running some commands using docker-compose run and then listing all of the containers: 1 $ docker ps -a Output:

11 Development 6 1 CONTAINER ID IMAGE COMMAND CREATED STATUS \ 2 PORTS NAMES 3 d2aa78889f2a myapp_webapp "rails c" 11 seconds ago Exited (0) \ 4 3 seconds ago myapp_webapp_run_2 5 bda9ef myapp_webapp "rails c" 2 minutes ago Exited (0) \ 6 About a minute ago myapp_webapp_run_1 7 85f1508c8705 myapp_webapp "/sbin/my_init" 2 hours ago Up 7 minute\ 8 s :80->80/tcp, 443/tcp myapp You see that we have our application running with the name myapp, but we also have two containers that were created just for running the rails commands. Of course the status of those containers is exited since they were created just for that. When you use docker exec instead, you are just going inside of the running container and not creating an extra one. So let s just stick with that approach. Let s go inside of the container and create a very simple scaffold: 1 $ docker exec -it myapp bash 2 # rails g scaffold article title:string body:text 3 # rake db:migrate Now you can visit the path /articles and you should be able to list and add articles. If you want to run the tests created during the scaffold, you can run: 1 # rake Output: 1 Run options: --seed # Running: Finished in s, runs/s, assertions/s runs, 12 assertions, 0 failures, 0 errors, 0 skips We will use these tests later in our Continuous Integration chapter.

12 Development 7 Adding a production-ready database In this section we ll add a real database to our application. Typically you would use MySQL or Postgres or a NoSQL database like MongoDB in production. The setup for any of these would be pretty similar if you re using containers. You just need the correct configuration in order to run the images. In this case we ll go with Postgres. We are going to be using the official Postgres image⁶ from DockerHub. The environment variables that this image uses for running are POSTGRES_PASSWORD, POSTGRES_USER, and POSTGRES_DB. You can find a full list in the documentation, but for us these will be enough for now: First, let s add a Postgres section in our docker-compose.yml file: 1 postgres: 2 image: postgres:9.4 3 container_name: myapp-db 4 environment: 5 - POSTGRES_USER=myapp 6 - POSTGRES_DB=myapp_development 7 - POSTGRES_PASSWORD=secretpassword If you want to persist your data in your development environment, you ll need to mount a data-only container for this database. You can achieve this by adding another section for that container: 1 postgres-data: 2 image: postgres:9.4 3 container_name: myapp-data 4 environment: 5 - POSTGRES_PASSWORD=secretpassword 6 volumes: 7 - /var/lib/postgresql/data 8 command: /bin/true And then mount the correct path on the database container: ⁶

13 Development 8 1 postgres: 2 image: postgres:9.4 3 container_name: myapp-db 4 environment: 5 - POSTGRES_USER=myapp 6 - POSTGRES_DB=myapp_development 7 - POSTGRES_PASSWORD=secretpassword 8 volumes_from: 9 - postgres-data Now we can use the new Docker networking feature in order to connect our database container with our application container. For that we have to use the version 2 of docker-compose, so at the beginning of the docker-compose.yml file add: 1 version: '2' And now let s move the app and the db to a services section with the same network: 1 version: '2' 2 services: 3 webapp: 4 build:. 5 container_name: myapp 6 working_dir: /home/app/webapp 7 ports: 8 - "80:80" 9 environment: 10 - PASSENGER_APP_ENV=development 11 volumes: 12 -.:/home/app/webapp 13 networks: 14 - back-end 15 postgres: 16 image: postgres: container_name: myapp-db 18 environment: 19 - POSTGRES_USER=myapp 20 - POSTGRES_DB=myapp_development 21 - POSTGRES_PASSWORD=secretpassword 22 volumes_from: 23 - postgres-data 24 networks: 25 - back-end 26 postgres-data: 27 image: postgres: container_name: myapp-data 29 environment: 30 - POSTGRES_PASSWORD=secretpassword

14 Development 9 31 volumes: 32 - /var/lib/postgresql/data 33 command: /bin/true 34 networks: 35 back-end: 36 driver: bridge Now we can connect to the database from our web application by using the service alias postgres instead of using the old linking via environmental variables. Now that we re ready with the Docker Compose yaml file, let s add the Postgres gem to our application. Remember that you can modify the code locally since we are mounting a volume from the local project to the project inside of the container. Add the following to your Gemfile: 1 gem 'pg', '~> 0.18' And now from inside the container run bundle install: 1 $ docker exec -it myapp bash 2 # bundle install And then add the following to your config/database.yml file: 1 default: &default 2 adapter: postgresql 3 encoding: unicode 4 pool: development: 7 <<: *default 8 database: myapp_development 9 username: myapp 10 password: secretpassword 11 host: postgres 12 port: test: 15 <<: *default 16 database: myapp_test production: 19 <<: *default 20 database: myapp_production 21 username: myapp 22 password: secretpassword Now let s rebuild our application:

15 Development 10 1 $ docker-compose stop 2 $ docker-compose build And run up: 1 $ docker-compose up This will pull the postgres image, run the container and create the user and database we specified before. Now we just need to run the migrations for our scaffold: 1 $ docker exec -it myapp bash 2 # rake db:migrate And that s it!, now you can visit your application connected to the postgres database and test that that everything works as expected. Adding a Search Engine In order to make things more interesting and to put ourselves in a more realistic scenario, let s add a search engine to our application. Elasticsearch has a really nice integration with Rails via the Elasticsearch-rails gem⁷. The steps we need to follow in order to add this gem to our project are: 1. Add the necessary gems 2. Add the new service to our docker-compose.yml file 3. Add the initializer for connecting with Elasticsearch 4. Add the Elasticsearch modules to our Article model 5. Run docker-compose build and docker-compose up Open the Gemfile an add the following: 1 gem 'elasticsearch-model', git: 'git://github.com/elasticsearch/elasticsearch-rails.git' 2 gem 'elasticsearch-rails', git: 'git://github.com/elasticsearch/elasticsearch-rails.git' And then run bundle install inside of the container: ⁷

16 Development 11 1 $ docker exec -it myapp bash 2 # bundle install We are going to use the official DockerHub image for elasticsearch⁸ in our docker-compose.yml file. Add the following service: Now open the docker-compose.yml file and add the following services: 1 elasticsearch: 2 image: elasticsearch:2.3 3 container_name: myapp-es 4 volumes_from: 5 - elasticsearch-data 6 networks: 7 - back-end 8 elasticsearch-data: 9 image: elasticsearch: container_name: myapp-es-data 11 volumes: 12 - /var/lib/elasticsearch 13 command: /bin/true As you can see, we re also adding a data-only container for persisting the Elasticsearch data locally in case we need to recreate our container. In order to use the gem in our Rails application, we must add an initializer with the configuration. Create the file config/initializers/elasticsearch.rb and add the following code: 1 host = 'elasticsearch' 2 3 Elasticsearch::Model.client = Elasticsearch::Client.new host: " 4 5 # Print Curl-formatted traces in development into a file 6 # 7 if Rails.env.development? 8 tracer = ActiveSupport::Logger.new('log/elasticsearch.log') 9 tracer.level = Logger::DEBUG 10 end Elasticsearch::Model.client.transport.tracer = tracer We can use the host elasticsearch for this service since we declared it with that name in our network in the docker-compose.yml file. The rest of the code is for debugging purposes. Let s also create the task lib/tasks/elasticsearch.rake with the following code: ⁸

17 Development 12 1 require 'elasticsearch/rails/tasks/import' This will gives us a handy command for indexing all the records for the models associated to Elasticsearch documents. Right now we only have the Article model so open app/models/article.rb and add the following: 1 class Article < ApplicationRecord 2 include Elasticsearch::Model 3 include Elasticsearch::Model::Callbacks 4 end Those modules will include the necessary hooks for indexing the records. Rebuild the project: 1 $ docker-compose build 2 $ docker-compose up And add a couple of records to the database: 1 $ docker exec -it myapp bash 2 # rails c 3 > Article.create(title: 'article 1', body: 'body for article 1') 4 > Article.create(title: 'article 2', body: 'body for article 2') 5 > Article.create(title: 'article 3', body: 'body for article 3') These articles should be indexed immediately thanks to the callbacks added by the Elasticsearch modules in the model. Let s perform a search just to be sure: 1 > Article.search("3").results.first 2 => _id="4" _index="\ 3 articles" _score= _source=#<hashie::mash body="body for article 3" created_at=" t\ 4 00:49:37.329Z" id=4 title="article 3" updated_at=" t00:49:37.329z"> _type="article">> You can see in the result that we re in fact searching in the Elasticsearch index and we found a match. If you have previous records you want to index, you can run the task provided by the gem: 1 # bundle exec rake environment elasticsearch:import:model CLASS='Article' 2 [IMPORT] Done And that s it! We have a production-ready search engine for our application.

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile Status: Closed Priority: Normal Author: Enno Grà per Category: Created: 2011-07-17 Assignee: Updated: 2012-06-23 Due date:

More information

Installing Open Project on Ubuntu AWS with Apache and Postgesql

Installing Open Project on Ubuntu AWS with Apache and Postgesql Installing Open Project on Ubuntu AWS with Apache and Postgesql Contents Installing Open Project on Ubuntu AWS with Apache and Postgesql... 1 Add new ports to your security group... 2 Update your system...

More information

Arup Nanda VP, Data Services Priceline.com

Arup Nanda VP, Data Services Priceline.com Jumpstarting Docker Arup Nanda VP, Data Services Priceline.com My application worked in Dev but not in QA Will it work in production? I need an environment right now No, I can t wait for 2 weeks I just

More information

Fixing the "It works on my machine!" Problem with Docker

Fixing the It works on my machine! Problem with Docker Fixing the "It works on my machine!" Problem with Docker Jared M. Smith @jaredthecoder About Me Cyber Security Research Scientist at Oak Ridge National Lab BS and MS in Computer Science from the University

More information

Bitnami Ruby for Huawei Enterprise Cloud

Bitnami Ruby for Huawei Enterprise Cloud Bitnami Ruby for Huawei Enterprise Cloud Description Bitnami Ruby Stack provides a complete development environment for Ruby on Rails that can be deployed in one click. It includes most popular components

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

Containers. Pablo F. Ordóñez. October 18, 2018

Containers. Pablo F. Ordóñez. October 18, 2018 Containers Pablo F. Ordóñez October 18, 2018 1 Welcome Song: Sola vaya Interpreter: La Sonora Ponceña 2 Goals Containers!= ( Moby-Dick ) Containers are part of the Linux Kernel Make your own container

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Ralf Teusner ralf.teusner@hpi.de Software Engineering II WS 2018/19 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Introduction to Containers

Introduction to Containers Introduction to Containers Shawfeng Dong Principal Cyberinfrastructure Engineer University of California, Santa Cruz What are Containers? Containerization, aka operating-system-level virtualization, refers

More information

How Docker Compose Changed My Life

How Docker Compose Changed My Life How Docker Compose Changed My Life Bryson Tyrrell Desktop Support Specialist I m Bryson Tyrrell, a Desktop Services Specialist with Jamf s IT department. Or at least I was Bryson Tyrrell System Administrator

More information

Docker & why we should use it

Docker & why we should use it Docker & why we should use it Vicențiu Ciorbaru Software Engineer @ MariaDB Foundation * * Agenda What is Docker? What Docker brings to the table compared to KVM and Vagrant? Docker tutorial What is Docker

More information

Set up, Configure, and Use Docker on Local Dev Machine

Set up, Configure, and Use Docker on Local Dev Machine Set up, Configure, and Use Docker on Local Dev Machine Table of Contents Set up, Configure, and Use Docker on Local Dev Machine... 1 1. Introduction... 2 1.1 Major Docker Components... 2 1.2 Tools Installed

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Software Engineering II WS 2016/17 Arian Treffer arian.treffer@hpi.de Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby

More information

Docker for Developers

Docker for Developers Docker for Developers Chris Tankersley This book is for sale at http://leanpub.com/dockerfordevs This version was published on 2017-08-07 This is a Leanpub book. Leanpub empowers authors and publishers

More information

" Qué me estás container?" Docker for dummies

 Qué me estás container? Docker for dummies " Qué me estás container?" Docker for dummies Sara Arjona @sara_arjona Pau Ferrer @crazyserver Developer at Moodle HQ Moodle Mobile developer at Moodle HQ #MootES18 Who uses Docker for development? Who

More information

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering Developing and Testing Java Microservices on Docker Todd Fasullo Dir. Engineering Agenda Who is Smartsheet + why we started using Docker Docker fundamentals Demo - creating a service Demo - building service

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Keven Richly keven.richly@hpi.de Software Engineering II WS 2017/18 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Docker und IBM Digital Experience in Docker Container

Docker und IBM Digital Experience in Docker Container Docker und IBM Digital Experience in Docker Container 20. 21. Juni 2017 IBM Labor Böblingen 1 What is docker Introduction VMs vs. containers Terminology v Docker components 2 6/22/2017 What is docker?

More information

Installing and Using Docker Toolbox for Mac OSX and Windows

Installing and Using Docker Toolbox for Mac OSX and Windows Installing and Using Docker Toolbox for Mac OSX and Windows One of the most compelling reasons to run Docker on your local machine is the speed at which you can deploy and build lab environments. As a

More information

DEPLOYMENT MADE EASY!

DEPLOYMENT MADE EASY! DEPLOYMENT MADE EASY! Presented by Hunde Keba & Ashish Pagar 1 DSFederal Inc. We provide solutions to Federal Agencies Our technology solutions connect customers to the people they serve 2 Necessity is

More information

Engineering Robust Server Software

Engineering Robust Server Software Engineering Robust Server Software Containers Isolation Isolation: keep different programs separate Good for security Might also consider performance isolation Also has security implications (side channel

More information

Build, test and release your python packages

Build, test and release your python packages Build, test and release your python packages Using DevPI, Docker and Jenkins David Melamed PyWeb #55-1st August 2016 A word about me Moved to Israel 8 years ago PhD in BioInformatics Senior Research Engineer

More information

Creating pipelines that build, test and deploy containerized artifacts Slides: Tom Adams

Creating pipelines that build, test and deploy containerized artifacts Slides:   Tom Adams Creating pipelines that build, test and deploy containerized artifacts Slides: https://goo.gl/2mzfe6 Tom Adams tadams@thoughtworks.com 1 Who I am Tom Adams Tech Lead tadams@thoughtworks.com http://tadams289.blogspot.com

More information

Optimizing Docker Images

Optimizing Docker Images Optimizing Docker Images Brian DeHamer - CenturyLink Labs bdehamer CenturyLinkLabs @bdehamer @centurylinklabs Overview Images & Layers Minimizing Image Size Leveraging the Image Cache Dockerfile Tips

More information

TangeloHub Documentation

TangeloHub Documentation TangeloHub Documentation Release None Kitware, Inc. September 21, 2015 Contents 1 User s Guide 3 1.1 Managing Data.............................................. 3 1.2 Running an Analysis...........................................

More information

INFRASTRUCTURE AS CODE

INFRASTRUCTURE AS CODE INFRASTRUCTURE AS CODE David Sherman EQUIPE PLEIADE BORDEAUX SUD-OUEST 2016-11-08 2016-11-08-22 Pets versus Cattle 2016-11-08-23 Pets versus Cattle (or sheep) https://vimeo.com/4486963 2016-11-08-24 Infrastructure

More information

Bitnami JRuby for Huawei Enterprise Cloud

Bitnami JRuby for Huawei Enterprise Cloud Bitnami JRuby for Huawei Enterprise Cloud Description JRuby is a 100% Java implementation of the Ruby programming language. It is Ruby for the JVM. JRuby provides a complete set of core built-in classes

More information

Downloading and installing Db2 Developer Community Edition on Red Hat Enterprise Linux Roger E. Sanders Yujing Ke Published on October 24, 2018

Downloading and installing Db2 Developer Community Edition on Red Hat Enterprise Linux Roger E. Sanders Yujing Ke Published on October 24, 2018 Downloading and installing Db2 Developer Community Edition on Red Hat Enterprise Linux Roger E. Sanders Yujing Ke Published on October 24, 2018 This guide will help you download and install IBM Db2 software,

More information

Technical Manual. Software Quality Analysis as a Service (SQUAAD) Team No.1. Implementers: Aleksandr Chernousov Chris Harman Supicha Phadungslip

Technical Manual. Software Quality Analysis as a Service (SQUAAD) Team No.1. Implementers: Aleksandr Chernousov Chris Harman Supicha Phadungslip Technical Manual Software Quality Analysis as a Service (SQUAAD) Team No.1 Implementers: Aleksandr Chernousov Chris Harman Supicha Phadungslip Testers: Kavneet Kaur Reza Khazali George Llames Sahar Pure

More information

Midterm Presentation Schedule

Midterm Presentation Schedule Midterm Presentation Schedule October 18 th Aurora, Bash, Sangam October 20 th Flash, Omega, CodeRing October 25th Omni, Aviato, NPComplete Mid Term Presentation Format 25 minutes Be prepared to use the

More information

It s probably the most popular containerization technology on Linux these days

It s probably the most popular containerization technology on Linux these days Docker & Perl What is docker? It s probably the most popular containerization technology on Linux these days It s somewhere between chroot jails and virtual machines. Effectively lightweight virtual machines

More information

Who is Docker and how he can help us? Heino Talvik

Who is Docker and how he can help us? Heino Talvik Who is Docker and how he can help us? Heino Talvik heino.talvik@seb.ee heino.talvik@gmail.com What is Docker? Software guy view: Marriage of infrastucture and Source Code Management Hardware guy view:

More information

USING DOCKER FOR MXCUBE DEVELOPMENT AT MAX IV

USING DOCKER FOR MXCUBE DEVELOPMENT AT MAX IV USING DOCKER FOR MXCUBE DEVELOPMENT AT MAX IV Fredrik Bolmsten, Antonio Milán Otero K.I.T.S. Group at Max IV - 2017 1 OVERVIEW What is Docker? How does it work? How we use it for MxCUBE How to create a

More information

Getting Started With Containers

Getting Started With Containers DEVNET 2042 Getting Started With Containers Matt Johnson Developer Evangelist @mattdashj Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1. Find this session

More information

Running Splunk Enterprise within Docker

Running Splunk Enterprise within Docker Running Splunk Enterprise within Docker Michael Clayfield Partner Consultant 03/09/2017 1.1 Forward-Looking Statements During the course of this presentation, we may make forward-looking statements regarding

More information

Downloading and installing Db2 Developer Community Edition on Ubuntu Linux Roger E. Sanders Yujing Ke Published on October 24, 2018

Downloading and installing Db2 Developer Community Edition on Ubuntu Linux Roger E. Sanders Yujing Ke Published on October 24, 2018 Downloading and installing Db2 Developer Community Edition on Ubuntu Linux Roger E. Sanders Yujing Ke Published on October 24, 2018 This guide will help you download and install IBM Db2 software, Data

More information

Dockerfile Best Practices

Dockerfile Best Practices Dockerfile Best Practices OpenRheinRuhr 2015 November 07th, 2015 1 Dockerfile Best Practices Outline About Dockerfile Best Practices Building Images This work is licensed under the Creative Commons Attribution-ShareAlike

More information

Gunnery Documentation

Gunnery Documentation Gunnery Documentation Release 0.1 Paweł Olejniczak August 18, 2014 Contents 1 Contents 3 1.1 Overview................................................. 3 1.2 Installation................................................

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

Docker for Sysadmins: Linux Windows VMware

Docker for Sysadmins: Linux Windows VMware Docker for Sysadmins: Linux Windows VMware Getting started with Docker from the perspective of sysadmins and VM admins Nigel Poulton This book is for sale at http://leanpub.com/dockerforsysadmins This

More information

The Laravel Survival Guide

The Laravel Survival Guide The Laravel Survival Guide Tony Lea This book is for sale at http://leanpub.com/laravelsurvivalguide This version was published on 2016-09-12 This is a Leanpub book. Leanpub empowers authors and publishers

More information

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide!

Rails Guide. MVC Architecture. Migrations. Hey, thanks a lot for picking up this guide! Rails Guide Hey, thanks a lot for picking up this guide! I created this guide as a quick reference for when you are working on your projects, so you can quickly find what you need & keep going. Hope it

More information

DevOps Workflow. From 0 to kube in 60 min. Christian Kniep, v Technical Account Manager, Docker Inc.

DevOps Workflow. From 0 to kube in 60 min.   Christian Kniep, v Technical Account Manager, Docker Inc. DevOps Workflow From 0 to kube in 60 min http://qnib.org/devops-workflow Christian Kniep, v2018-02-20 Technical Account Manager, Docker Inc. Motivation Iteration barriers Works on my Laptop! Why is DevOps

More information

DOCKER 101 FOR JS AFFICIONADOS. Christian Ulbrich, Zalari UG

DOCKER 101 FOR JS AFFICIONADOS. Christian Ulbrich, Zalari UG DOCKER 101 FOR JS AFFICIONADOS Christian Ulbrich, Zalari UG AGENDA Docker what is all the craze about? Docker is hard One-Liners Orchestration Outlook Links DOCKER WTF? DOCKER WTF? Docker is light-weight

More information

An introduction to Docker

An introduction to Docker An introduction to Docker Ing. Vincenzo Maffione Operating Systems Security Container technologies on Linux Several light virtualization technologies are available for Linux They build on cgroups, namespaces

More information

I hate money. Release 1.0

I hate money. Release 1.0 I hate money Release 1.0 Nov 01, 2017 Contents 1 Table of content 3 2 Indices and tables 15 i ii «I hate money» is a web application made to ease shared budget management. It keeps track of who bought

More information

Docker on VDS. Aurelijus Banelis

Docker on VDS. Aurelijus Banelis Docker on VDS Aurelijus Banelis Aurelijus Banelis Software developer aurelijus.banelis.lt aurelijus@banelis.lt Docker on VDS You will learn Why VDS? Why docker? What is docker? Is it possible? Why not?

More information

Your First Meteor Application

Your First Meteor Application Your First Meteor Application A Complete Beginner s Guide to Meteor.js David Turnbull This book is for sale at http://leanpub.com/meteortutorial This version was published on 2015-06-09 This is a Leanpub

More information

OpenShift Cheat Sheet

OpenShift Cheat Sheet OpenShift Cheat Sheet Table of Contents 1. What is OpenShift?....1 2. Cheat sheet guide...1 3. Command overview.... 2 4. Simple build and deploy overview.... 4 5. Simple routing overview... 4 6. Examples...

More information

Investigating Containers for Future Services and User Application Support

Investigating Containers for Future Services and User Application Support Investigating Containers for Future Services and User Application Support JLAB CNI NLIT 2018 () Overview JLAB scope What is a container? Why are we interested? Platform-as-a-Service (PaaS) for orchestration

More information

Singularity CRI User Documentation

Singularity CRI User Documentation Singularity CRI User Documentation Release 1.0 Sylabs Apr 02, 2019 CONTENTS 1 Installation 1 1.1 Overview................................................. 1 1.2 Before you begin.............................................

More information

Laravel: From Apprentice To Artisan

Laravel: From Apprentice To Artisan Laravel: From Apprentice To Artisan Advanced Architecture With Laravel 4 Taylor Otwell This book is for sale at http://leanpub.com/laravel This version was published on 2013-09-04 This is a Leanpub book.

More information

CS 188. Scalable Internet Services Andrew Mutz November 29, 2016

CS 188. Scalable Internet Services Andrew Mutz November 29, 2016 CS 188 Scalable Internet Services Andrew Mutz November 29, 2016 Calendar Updates Final presentations are Thursday and Friday! Writeups are due Thursday at 4pm, emailed to me: andrew.mutz@cs.ucla.edu Thursday

More information

Build your dev environment with Docker.

Build your dev environment with Docker. Build your dev environment with Docker Jonathan Brinley 2 What does your dev environment look like? 3 What does your production environment look like? 4 add_action( 'init', function () { remove_post_type_support(

More information

swiftenv Documentation

swiftenv Documentation swiftenv Documentation Release 1.3.0 Kyle Fuller Sep 27, 2017 Contents 1 The User Guide 3 1.1 Installation................................................ 3 1.2 Getting Started..............................................

More information

sqlite wordpress 06C6817F2E58AF4319AB84EE Sqlite Wordpress 1 / 6

sqlite wordpress 06C6817F2E58AF4319AB84EE Sqlite Wordpress 1 / 6 Sqlite Wordpress 1 / 6 2 / 6 3 / 6 Sqlite Wordpress Run WordPress with SQLite instead of MySQL database and how to install and set it up, this is a great way to get WordPress setup running on small web

More information

$ wget V SOLUTIONS.tar.bz2 \ --user=lftraining --password=penguin2014

$ wget   V SOLUTIONS.tar.bz2 \ --user=lftraining --password=penguin2014 3.5. LABS 1 Exercise 3.1: Install Kubernetes Overview There are several Kubernetes installation tools provided by various vendors. In this lab we will learn to use kubeadm As an independent tool, it is

More information

SQL Server inside a docker container. Christophe LAPORTE SQL Server MVP/MCM SQL Saturday 735 Helsinki 2018

SQL Server inside a docker container. Christophe LAPORTE SQL Server MVP/MCM SQL Saturday 735 Helsinki 2018 SQL Server inside a docker container Christophe LAPORTE SQL Server MVP/MCM SQL Saturday 735 Helsinki 2018 Christophe LAPORTE ~ since 1997 : SQL 6.5 / WinNT4 christophe_laporte@hotmail.fr http://conseilit.wordpress.com/

More information

The age of orchestration

The age of orchestration The age of orchestration From Docker basics to cluster management NICOLA PAOLUCCI DEVELOPER INSTIGATOR ATLASSIAN @DURDN Three minute Docker intro? Time me and ring a bell if I am over it. Just kidding

More information

Git Workbook. Self-Study Guide to Git. Lorna Mitchell. This book is for sale at

Git Workbook. Self-Study Guide to Git. Lorna Mitchell. This book is for sale at Git Workbook Self-Study Guide to Git Lorna Mitchell This book is for sale at http://leanpub.com/gitworkbook This version was published on 2018-01-15 This is a Leanpub book. Leanpub empowers authors and

More information

Index. Bessel function, 51 Big data, 1. Cloud-based version-control system, 226 Containerization, 30 application, 32 virtualize processes, 30 31

Index. Bessel function, 51 Big data, 1. Cloud-based version-control system, 226 Containerization, 30 application, 32 virtualize processes, 30 31 Index A Amazon Web Services (AWS), 2 account creation, 2 EC2 instance creation, 9 Docker, 13 IP address, 12 key pair, 12 launch button, 11 security group, 11 stable Ubuntu server, 9 t2.micro type, 9 10

More information

IBM Cloud Developer Tools (IDT) and App Service Console Overview

IBM Cloud Developer Tools (IDT) and App Service Console Overview IBM Cloud Developer Tools (IDT) and App Service Console Overview Steve Clay clays@us.ibm.com Technical Lead, IDT Paul Bennett pwbennet@us.ibm.com Java Squad Lead, IBM Cloud Developer Experience Cloud native

More information

Container-based virtualization: Docker

Container-based virtualization: Docker Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Container-based virtualization: Docker Corso di Sistemi Distribuiti e Cloud Computing A.A. 2018/19

More information

WHITE PAPER AUGUST 2017 AN INTRODUCTION TO BOSH. by VMware

WHITE PAPER AUGUST 2017 AN INTRODUCTION TO BOSH. by VMware WHITE PAPER AUGUST 2017 AN INTRODUCTION TO by ware Table of Contents What is?...3 Overview...3 What Problems Does Solve?... 4 Use Cases... 6 Deploying...8 Architecture...8 References...8 CookBook: How

More information

DevOps Course Content

DevOps Course Content DevOps Course Content 1. Introduction: Understanding Development Development SDLC using WaterFall & Agile Understanding Operations DevOps to the rescue What is DevOps DevOps SDLC Continuous Delivery model

More information

manifold Documentation

manifold Documentation manifold Documentation Release 0.0.1 Open Source Robotics Foundation Mar 04, 2017 Contents 1 What is Manifold? 3 2 Installation 5 2.1 Ubuntu Linux............................................... 5 2.2

More information

upaas Documentation Release 0.2 Łukasz Mierzwa

upaas Documentation Release 0.2 Łukasz Mierzwa upaas Documentation Release 0.2 Łukasz Mierzwa January 06, 2014 Contents 1 Release notes 3 1.1 About upaas............................................... 3 1.2 Changelog................................................

More information

Docker A FRAMEWORK FOR DATA INTENSIVE COMPUTING

Docker A FRAMEWORK FOR DATA INTENSIVE COMPUTING Docker A FRAMEWORK FOR DATA INTENSIVE COMPUTING Agenda Intro / Prep Environments Day 1: Docker Deep Dive Day 2: Kubernetes Deep Dive Day 3: Advanced Kubernetes: Concepts, Management, Middleware Day 4:

More information

CSCI 201 Lab 1 Environment Setup

CSCI 201 Lab 1 Environment Setup CSCI 201 Lab 1 Environment Setup "The journey of a thousand miles begins with one step." - Lao Tzu Introduction This lab document will go over the steps to install and set up Eclipse, which is a Java integrated

More information

By: Jeeva S. Chelladhurai

By: Jeeva S. Chelladhurai CI CD By: Jeeva S. Chelladhurai Tools SCM: www.github.com CI/CD: Jenkins 2.0 Important Plugins: Pipeline (for Jenkinsfile), git, github, SSH Slaves (for build slave) Platform: docker Container Orchestration:

More information

Red Hat OpenShift Application Runtimes 0.1

Red Hat OpenShift Application Runtimes 0.1 Red Hat OpenShift Application Runtimes 0.1 Install and Configure the developers.redhat.com/launch Application on a Single-node OpenShift Cluster For Use with Red Hat OpenShift Application Runtimes Last

More information

Handel-CodePipeline Documentation

Handel-CodePipeline Documentation Handel-CodePipeline Documentation Release 0.0.6 David Woodruff Dec 11, 2017 Getting Started 1 Introduction 3 2 Installation 5 3 Tutorial 7 4 Using Handel-CodePipeline 11 5 Handel-CodePipeline File 13

More information

FEniCS Containers Documentation

FEniCS Containers Documentation FEniCS Containers Documentation Release 1.0 FEniCS Project Jan 29, 2018 Contents 1 Quickstart 3 2 Introduction 5 2.1 What is Docker?............................................. 5 2.2 Installing Docker.............................................

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Red Hat Quay 2.9 Deploy Red Hat Quay - Basic

Red Hat Quay 2.9 Deploy Red Hat Quay - Basic Red Hat Quay 2.9 Deploy Red Hat Quay - Basic Deploy Red Hat Quay Last Updated: 2018-09-14 Red Hat Quay 2.9 Deploy Red Hat Quay - Basic Deploy Red Hat Quay Legal Notice Copyright 2018 Red Hat, Inc. The

More information

nacelle Documentation

nacelle Documentation nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2

More information

Think Small to Scale Big

Think Small to Scale Big Think Small to Scale Big Intro to Containers for the Datacenter Admin Pete Zerger Principal Program Manager, MVP pete.zerger@cireson.com Cireson Lee Berg Blog, e-mail address, title Company Pete Zerger

More information

Red Hat OpenShift Application Runtimes 1

Red Hat OpenShift Application Runtimes 1 Red Hat OpenShift Application Runtimes 1 Install and Configure the Fabric8 Launcher Tool For Use with Red Hat OpenShift Application Runtimes Last Updated: 2018-03-09 Red Hat OpenShift Application Runtimes

More information

Marathon Documentation

Marathon Documentation Marathon Documentation Release 3.0.0 Top Free Games Feb 07, 2018 Contents 1 Overview 3 1.1 Features.................................................. 3 1.2 Architecture...............................................

More information

AGILE DEVELOPMENT AND PAAS USING THE MESOSPHERE DCOS

AGILE DEVELOPMENT AND PAAS USING THE MESOSPHERE DCOS Sunil Shah AGILE DEVELOPMENT AND PAAS USING THE MESOSPHERE DCOS 1 THE DATACENTER OPERATING SYSTEM (DCOS) 2 DCOS INTRODUCTION The Mesosphere Datacenter Operating System (DCOS) is a distributed operating

More information

Docker Security. Mika Vatanen

Docker Security. Mika Vatanen Docker Security Mika Vatanen 13.6.2017 About me Mika Vatanen, Solution Architect @ Digia 18 years at the industry, 6 months at Digia Established ii2 a Finnish MySpace, top-5 most used web service in Finland

More information

The Long Road from Capistrano to Kubernetes

The Long Road from Capistrano to Kubernetes The Long Road from Capistrano to Kubernetes Tobias Schwab, Co-Founder of PhraseApp Slides: http://bit.ly/cap-to-kube How to deploy Ruby on Rails? Deploying Ruby on Rails required on all servers: OS + system

More information

Lab Exercises: Deploying, Managing, and Leveraging Honeypots in the Enterprise using Open Source Tools

Lab Exercises: Deploying, Managing, and Leveraging Honeypots in the Enterprise using Open Source Tools Lab Exercises: Deploying, Managing, and Leveraging Honeypots in the Enterprise using Open Source Tools Fill in the details of your MHN Server info. If you don t have this, ask your instructor. These details

More information

CNA1699BU Running Docker on your Existing Infrastructure with vsphere Integrated Containers Martijn Baecke Patrick Daigle VMworld 2017 Content: Not fo

CNA1699BU Running Docker on your Existing Infrastructure with vsphere Integrated Containers Martijn Baecke Patrick Daigle VMworld 2017 Content: Not fo CNA1699BU Running Docker on your Existing Infrastructure with vsphere Integrated Containers VMworld 2017 Content: Not for publication #VMworld #CNA1699BU CNA1699BU Running Docker on your Existing Infrastructure

More information

Docker for Development: Getting Started

Docker for Development: Getting Started Docker for Development: Getting Started Lisa H. Ridley Savas Labs DrupalCamp Chattanooga November 5, 2016 Who am I? Lisa Ridley, Director of Client Success, Savas Labs Lead Developer and Project Manager

More information

Network softwarization Lab session 2: OS Virtualization Networking

Network softwarization Lab session 2: OS Virtualization Networking Network softwarization Lab session 2: OS Virtualization Networking Nicolas Herbaut David Bourasseau Daniel Negru December 16, 2015 1 Introduction 1.1 Discovering docker 1.1.1 Installation Please launch

More information

Modern Online Radio with Liquidsoap

Modern Online Radio with Liquidsoap Modern Online Radio with Liquidsoap Tony Miller This book is for sale at http://leanpub.com/modernonlineradiowithliquidsoap This version was published on 2015-04-21 This is a Leanpub book. Leanpub empowers

More information

Verteego VDS Documentation

Verteego VDS Documentation Verteego VDS Documentation Release 1.0 Verteego May 31, 2017 Installation 1 Getting started 3 2 Ansible 5 2.1 1. Install Ansible............................................. 5 2.2 2. Clone installation

More information

Use Case: Scalable applications

Use Case: Scalable applications Use Case: Scalable applications 1. Introduction A lot of companies are running (web) applications on a single machine, self hosted, in a datacenter close by or on premise. The hardware is often bought

More information

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 Git CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015 1 Lecture Goals Present a brief introduction to git You will need to know git to work on your presentations this semester 2 Git

More information

Blockchain on Kubernetes

Blockchain on Kubernetes Blockchain on Kubernetes By VMware Introduction Blockchain is an emerging technology which has been gaining traction globally during the past few years. Industries like finance, logistics, IoT, are actively

More information

Nextcloud 13: How to Get Started and Why You Should

Nextcloud 13: How to Get Started and Why You Should Nextcloud 13: How to Get Started and Why You Should Nextcloud could be the first step toward replacing proprietary services like Dropbox and Skype. By Marco Fioretti In its simplest form, the Nextcloud

More information

VMworld 2017 Content: Not for publication #CNA1699BE CONFIDENTIAL 2

VMworld 2017 Content: Not for publication #CNA1699BE CONFIDENTIAL 2 CNA1699BE Running Docker on your Existing Infrastructure with vsphere Integrated Containers VMworld 2017 Content: Not for publication Martijn Baecke, Robbie Jerrom #vmworld #CNA1699BE VMworld 2017 Robbie

More information

Code: Slides:

Code:   Slides: Workshop Resources Code: https://github.com/beekpr/public-workshops Slides: https://tinyurl.com/yc2uo3wk Make sure minikube and kubectl is setup (labs/1-setup-cluster.md has some instructions) Kubernetes

More information

Confire Documentation

Confire Documentation Confire Documentation Release 0.2.0 Benjamin Bengfort December 10, 2016 Contents 1 Features 3 2 Setup 5 3 Example Usage 7 4 Next Topics 9 5 About 17 Python Module Index 19 i ii Confire is a simple but

More information

CPW AutoGrader. CSCI 370 Field Session 2016 June 20, Client: Christopher Painter Wakefield

CPW AutoGrader. CSCI 370 Field Session 2016 June 20, Client: Christopher Painter Wakefield CPW AutoGrader CSCI 370 Field Session 2016 June 20, 2016 Client: Christopher Painter Wakefield Authors: Michael Bartlett Harry Krantz Eric Olson Chris Rice Caleb Willkomm Table of Contents Introduction

More information

Practical Node.js. Building Real-World Scalable Web Apps. Apress* Azat Mardan

Practical Node.js. Building Real-World Scalable Web Apps. Apress* Azat Mardan Practical Node.js Building Real-World Scalable Web Apps Azat Mardan Apress* Contents About the Author About the Technical Reviewer Acknowledgments Introduction xv xvii xix xxi Chapter 1: Setting up Node.js

More information

Follow me!

Follow me! Stuff I do Follow me! https://pasztor.at @janoszen About this talk 1. Maintaining your Build Stack 2. Orchestrating your Cluster 3. Pitfalls and Recommendations About this talk 1. Maintaining your Build

More information

Functional Reactive Programming on ios

Functional Reactive Programming on ios Functional Reactive Programming on ios Functional reactive programming introduction using ReactiveCocoa Ash Furrow This book is for sale at http://leanpub.com/iosfrp This version was published on 2016-05-28

More information

CIS : Computational Reproducibility

CIS : Computational Reproducibility CIS 602-01: Computational Reproducibility Containers and Reproducibility Dr. David Koop The Problem Matrix [Docker, Inc., 2016] 2 Shipping Analogy [Docker, Inc., 2016] 3 The Solution: Containers [Docker,

More information