Top Banner
Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan [email protected] Dan Armendariz [email protected]
49

2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan [email protected]

Mar 16, 2019

Download

Documents

DuongAnh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

Dockerizing CS50From Cluster to Cloud to Appliance to Container

David J. Malan [email protected]

Dan Armendariz [email protected]

Page 2: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 3: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

• CS50 • 800 students at Harvard College • 350 students at Yale College • 300 students at Harvard Extension

• CS50 for MBAs • 90 students at Harvard Business School

• CS50x • 700,000 registrants • Kansas City, Miami, Rhode Island, St. Louis, ... • Bolivia, Chile, Netherlands, Ukraine, ...

• CS50 AP • 40 high schools • 1,500 students

Page 4: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

• CS50 • 800 students at Harvard College • 350 students at Yale College • 300 students at Harvard Extension

• CS50 for MBAs • 90 students at Harvard Business School

• CS50x • 700,000 registrants • Kansas City, Miami, Rhode Island, St. Louis, ... • Bolivia, Chile, Netherlands, Ukraine, ...

• CS50 AP • 40 high schools • 1,500 students

Page 5: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

• CS50 • 800 students at Harvard College • 350 students at Yale College • 300 students at Harvard Extension

• CS50 for MBAs • 90 students at Harvard Business School

• CS50x • 700,000 registrants • Kansas City, Miami, Rhode Island, St. Louis, ... • Bolivia, Chile, Netherlands, Ukraine, ...

• CS50 AP • 40 high schools • 1,500 students

Page 6: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

• CS50 • 800 students at Harvard College • 350 students at Yale College • 300 students at Harvard Extension

• CS50 for MBAs • 90 students at Harvard Business School

• CS50x • 700,000 registrants • Kansas City, Miami, Rhode Island, St. Louis, ... • Bolivia, Chile, Netherlands, Ukraine, ...

• CS50 AP • 40 high schools • 1,500 students

Page 7: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

on-campus cluster1989 – 2007

Page 8: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

+ managed by university

+ familiar to students

– no root access

–  outdated software

– no support after hours

Page 9: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

off-campus cloud2008

Page 10: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 11: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

+ root access + examine students' code in situ + no need for space, power, or cooling + more reliable + more scalable + topical for class

– time-consuming to administer –  difficult (at the time) to configure – unfamiliar to students –  latency

Page 12: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

on-campus cloud2009 – 2010

Page 13: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

+ root access + examine students' code in situ + lower latency

– time-consuming to administer – need for space, power, or cooling –  less scalable – less reliable

Page 14: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

client-side appliance2011 – 2014

Page 15: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 16: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

Fedora Linux, Xfce

Kickstart

Boxgrinder

yum

VirtualBox

Page 17: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

Xubuntu

apt-get

VMware Fusion, VMware Workstation

Page 18: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

+ more familiar environment + graphical tools + distributed load + Apache, MySQL + students could add software + anyone could engage actively

– time-consuming to prepare –  virtualization overhead –  brickable (hypervisor bugs) –  slow to boot, resume

Page 19: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

TeamViewer

Guest Additions, VMware Tools

Dropbox

Page 20: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

containers2015 –

Page 21: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

development environment

production environment

students' environment

Page 22: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

docker-machine

docker-compose

docker

Page 23: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

cs50/phphub.docker.com/r/cs50/php

Page 24: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

docker-compose.yml

app:...memcached:...mysql:...

Page 25: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

docker-compose.yml

memcached:container_name:memcachedimage:memcached

Page 26: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

docker-compose.yml

mysql:container_name:mysqlimage:mysqlenvironment:MYSQL_DATABASE:appMYSQL_ROOT_PASSWORD:12345

Page 27: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

docker-compose.ymlapp:build:.container_name:appenvironment:CACHE_HOST:memcachedCACHE_PORT:11211DB_HOST:mysqlDB_NAME:appDB_PASS:12345DB_USER:rootlinks:-memcached-mysqlports:-"80:80"volumes:-.:/srv/www

Page 28: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

Makefiledefault:up

pull: dockerlogin dockerpullcs50/app

build: docker-composebuild

rebuild: docker-composebuild--no-cache

up:build docker-composeup

bash: dockerexec-itappbash

Page 29: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

cs50/clihub.docker.com/r/cs50/cli

Page 30: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

$dockerrun-i--rm-v"$(pwd)":/root-tcs50/cli ThisisCS50CLI.#

Page 31: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

development environment

production environment

students' environment

Page 32: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

GitHub

Codeship

Amazon Elastic Beanstalk

Page 33: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

CACHE_HOST

CACHE_PORT

DB_HOST

DB_NAME

DB_PASS

DB_USER

Page 34: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

development environment

production environment

students' environment

Page 35: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 36: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

c9.io/new

Page 37: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 38: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu
Page 39: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

cs50/ide50-offlinehub.docker.com/r/cs50/ide50-offline

Page 40: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

D O C K E R I N S TA N C E2. communicate with instance

C D N

1. load GUI and plugins

O N L I N E

Page 41: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

D O C K E R I N S TA N C E

2. communicate with instance1. load GUI and plugins

O F F L I N E

Page 42: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

DockerfileFROMide50

#installCS50pluginsADD./files/harvard.cs50.catplugins/c9.ide.cs50.cat[..]

#Populateoffline-specificenvironmentvariablesRUNecho"exportUSER=ubuntu\n\exportC9_PROJECT=ide50-offline\n\exportC9_USER=jharvard\n\exportC9_HOSTNAME=\$OFFLINE_IP\n\exportC9_PORT=\$OFFLINE_PORT\n\exportIDE_OFFLINE=1”>/etc/profile.d/offline.sh

#installCloud9SDKRUNgitclonehttps://github.com/c9/core.gitc9sdk

Page 43: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

CS50 Sandbox

Page 44: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

CS50 Sandbox

CS50 Run

HTTP API

CS50 Check

Page 45: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

version 1Fedora Linux SELinux node.js strace pam_limits nice iptaples ...

Page 46: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

version 2Docker Ubuntu Linux node.js strace pam_limits nice iptaples ...

Page 47: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

what's next

Docker Cloud

Docker for Mac, Windows

Kitematic

Ubuntu 16.04

...

Page 48: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

recommendations

+ large courses

+ OpenCourseWare

+ web programming– cutting bleeding edge

Page 49: 2016-06-21 DockerCon 2016 - Computer Sciencecs.harvard.edu/malan/publications/dockercon16.pdf · Dockerizing CS50 From Cluster to Cloud to Appliance to Container David J. Malan malan@harvard.edu

Dockerizing CS50From Cluster to Cloud to Appliance to Container

David J. Malan [email protected]

Dan Armendariz [email protected]