Docker, Canvas
& LTI App Testing
Docker Overview
-
Platform for building & running lightweight, isolated application containers.
-
Reliably deploy pretty much anything, pretty much anywhere.
-
Two primary components:
-
Docker Engine: local, client/server software
- Docker Registry: public or private image repository
-
Docker Engine
-
docker daemon - manages building, running and distributing of containers
- docker client - command line UI for interacting with the docker daemon
- communication via socket or tcp
Under the Hood
- UnionFS: docker images consist of transparently overlaid "layers". Base images are built upon using instructions defined in a Dockerfile.
- libcontainer: container execution driver allows docker to manipulate:
- namespaces for isolating the container workspace
- cgroups for isolating hardware resources
Client, e.g.
%> docker ps
Show list of running containers
%> docker build -t myapp/ngnix dockerfiles/ngnix
Build an image
%> docker pull foo/postgres
Pull an image from a central repo
%> docker run -d -t --name ngnix myapp/ngnix
%> docker run -d -t --name postgres foo/postgres
Run some containers
%> docker stop ngnix
%> docker rm ngnix
Stop & remove running containers
Docker Registry
Docker Hub: centralized, public image repository
Dockerfile example
FROM phusion/baseimage:latest
MAINTAINER Jay Luker <lbjay@reallywow.com>
# Download latest package lists
RUN apt-get update
# Install dependencies
RUN apt-get install -yq \
openjdk-7-jre-headless \
wget
# Download version 1.4.2 of logstash
RUN cd /tmp && \
wget https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.tar.gz && \
tar -xzvf ./logstash-1.4.2.tar.gz && \
mv ./logstash-1.4.2 /opt/logstash && \
rm ./logstash-1.4.2.tar.gz
# Copy assets to their prospective locations
ADD ./assets/logstash.conf /opt/logstash.conf
ADD ./assets/run.sh /opt/run.sh
ADD ./assets/dashboard.json /opt/logstash/vendor/kibana/app/dashboards/default.json
RUN chmod 755 /opt/run.sh
# Kibana
EXPOSE 9292
# Start logstash
CMD ["/opt/run.sh"]
mh-userstats/docker/logstash/Dockerfile
Fig
Wrapper to simplify orchestration of
application services and components
redis:
image: dockerfile/redis
ports:
- "6379:6379"
volumes_from:
- shareddata
command: redis-server /etc/redis/redis.conf --dir /shareddata
elasticsearch:
build: ./docker/elasticsearch
ports:
- "9200:9200"
- "9300:9300"
volumes_from:
- shareddata
logstash:
build: ./docker/logstash
ports:
- "9292:9292"
links:
- redis
- elasticsearch
shareddata:
image: ventz/dataos
volumes:
- "/shareddata"
command: /bin/true
mh-userstats/fig.yml
%> fig up
%> fig ps
%> fig stop
canvas-docker
Containerized Canvas instances for dev/testing
https://github.com/harvard-dce/canvas-docker
canvas-docker image
https://registry.hub.docker.com/u/lbjay/canvas-docker
%> docker pull lbjay/canvas-docker
%> docker run -t -i -p "3000:3000" --name=canvas lbjay/canvas-docker
Demo!
Canvas/LTI & Docker
By James Luker
Canvas/LTI & Docker
- 1,109