VAGRANT AND DOCKER AS LEARNING ENVIRONMENTS Christinger Tomer School of Information Sciences University of Pittsburgh November 19, 2016 https://webarchive.jira.com/wiki/display/Heritrix
Technology and the Education of Archivists and Librarians It seems reasonable to assume that the solutions to many of the challenges confronting librarians and archivists today will involve the creative use of information technologies. Yet, librarians and archivists commonly do not understand how the systems they use to provide services actually work. Most of the students currently enrolled in LIS degree programs are unlikely to enter the workforce with substantial knowledge or skills.
Why Don’t MLIS Students Learn More about IT? Duration of most Master’s programs Academic Backgrounds of Most MLIS degree students The “Appliance” Mentality Unimaginative Approaches to the Design of Instruction Limitations of the Computing Environments Available for Teaching and Learning
New Possibilities through Virtualization Systems Portable Learning Lab Support for Learning via Experimentation Exposure to Systems and Applications Outside the Mainstream of Academic and/or Enterprise Computing
Vagrant and Docker Vagrant is an open source software tool for building and maintaining highly portable virtual development environments that are sandboxed in a virtual machine. Docker is another open-source project that automates the deployment of Linux applications inside software containers. Docker uses the resource isolation features of the Linux kernel such as `cgroups` and kernel `namespaces`, and a union-capable file system such as `aufs` to allow independent "containers" to run within a single Linux instance, by design avoiding the overhead of starting and maintaining virtual machines.
How Vagrant Works
Elements of Vagrant Provider, meaning a virtualization to host the Vagrant Box, e.g., VirtualBox, VMWare, Parallels, etc. Box, containing base VM image, JSON-based metadata file identifying provider, and Vagrantfile Vagrantfile, including basic configuration of the VM, base box, network and SSH setup, shared folders, provisioners, and provisioning scripts
Finding a Vagrant Box via Atlas
What You Can Do with Vagrant in Instructional Settings: Five Examples
Scotch Box A fully configured LAMP stack, including MySQL, PostgreSQL, MongoDB, SQLite, node.js, and the Laravel framework for PHP installed and running.
Islandora
Islandora, Part 2
Omeka
Omeka, Part 2
Atom
Heritrix Heritrix is a Web crawler designed for Web archiving. It was written by the Internet Archive, in Java. The main interface is accessible using a Web browser; there is a command-line tool that can also be used to initiate crawls.
Vagrant Share Vagrant Share enables the user to share his or her VM via HTTP connections. See below. Vagrant Connect makes it possible to share access to a VM via SSH.
A Shared Vagrant Instance
How Docker Works In this illustration, Kitematic is employed to access DockerHub and run locally installed containers.
Comparison: Linux Containers vs. VMs Containers are isolated, but share OS kernel and, where appropriate, bins/libraries App A App A’ App B Bins/ Libs Bins/ Libs Bins/ Libs …the result is faster deployment, greater disk space and memory efficiency, easier migration, security through isolation, etc. VM Guest OS Guest OS Guest OS Guest OS Guest OS App A App A App B App B App B App B Container Hypervisor (Type 2) Bins/Libs Bins/Libs Host OS Host OS Server Server
Docker Hub: Build, Ship, Run Applications DockerFile Source Code Repository Analytics DB Prod Machine Linux OS Docker Prod Machine Linux OS Docker Prod Machine Linux OS Docker Source Users Collab Provenance Policy Docker Hub Registries Public Curated Private Docker Hub API Third Party Tools Infrastructure Management Physical Docker Ship Build Dev Boot2Docker Mac/Win Dev Machine VM Docker VM Docker VM Docker Docker Docker Infrastructure Management Virtual QA Linux OS QA Machine TEST Run GCE RAX Azure ++ Staging Cloud DockerHub provides a centralized resource for container image discovery, distribution and change management, user and team collaboration, and workflow automation
Four Examples of What You Can Do with Docker in Instructional Settings
Apache Tomcat Apache Tomcat is a Java-based Web server. It is important in this context because it forms the basis for a number of key platforms, including DSpace, Fedora, and Islandora.
DSpace DSpace is an open source repository software package typically used for creating open access repositories for scholarly and/or published digital content. Its design is focused on the long-term storage, access and preservation of digital content.
File Information Tool Set (FITS)
Webmin Webmin is a Web-based system configuration tool for Unix-like systems, although recent versions can also be installed and run on Windows. Using any Web browser that supports tables and forms (and Java for the `File Manager` module), Webmin enables a user to administer a Linux or Unix system, e.g., setup user accounts, Apache, DNS, file sharing, etc., through a graphical user interface.
Building Vagrant Boxes and Dockerfiles Creating Vagrant Boxes from Existing Installations Creating Vagrant Boxes from Scratch with Packer Using docker build and Dockerfiles to create containers For example: docker build –t = "rethinkdb"
Summary and Conclusion How effective Vagrant and Docker are as teaching tools depends, in the end, on the effectiveness of instructors and the dedication of students. But it seems reasonable to imagine, as this presentation has, that Vagrant and Docker can be used as the basis for instruction that allows learners, be they Master’s students or working professionals, to engage directly and easily with the platforms they use to deliver end-user services and understand how those platforms have been designed and constructed and how their administration affects an array of relevant matters, ranging from workflows to the satisfaction and the complaints of the users of such systems.