GithubHelp home page GithubHelp logo

urughodu / docker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from csci104/docker

0.0 1.0 0.0 104 KB

A Docker container and instructions for virtualizing a C++ development environment

Dockerfile 8.31% Shell 49.92% Batchfile 41.78%

docker's Introduction

CSCI 104 Docker

This repository contains a Dockerfile and a couple of management scripts for creating and using a virtualized Linux container capable of building, running, and debugging C++. Using a virtualized container is preferable to a user's local machine because it guarantees consistent compilation and execution of C++ binaries. While compilers and tooling may vary between systems, creating a sealed environment from the exact same components every time ensures that code runs the same for graders as it does students.

But why use Docker over a traditional virtual machine? Docker is considerably less resource-intensive than installing a full virtual machine. Instead of needing the facilities for a graphical interface, virtual file system, etc., we can mount any directory of the host machine directly in the container and use a shell to run compilation and debugging. Development and file management may be done normally on the local machine.

The rest of this README is a quickstart for more experienced users. Feel free to read through the wiki for a more in-depth guide on how setup and use Docker as well as how it works.

System Requirements

Below are the system requirements for Docker Desktop:

Windows host:

  • Windows 10 64-bit: Pro, Enterprise, or Education (Build 15063 or later).
  • Hyper-V and Containers Windows features must be enabled.

If you are using Windows 10 Home, you can obtain a "free" license for Windows 10 Education here.

Mac host:

  • Mac hardware must be a 2010 or newer model
  • macOS must be version 10.13 or newer
  • 4 GB RAM minimum

Setup

First, install Docker desktop from the website. On a Windows machine, enable experimental features in the Docker Desktop Settings > Daemon >Advanced. Once done, clone this repository, which contains a setup script for both Windows- and Unix-based systems. Running it will build the CSCI 104 docker image and produce a management command line executable. On macOS in Terminal, run the respective setup script:

./unix/setup.sh

On Windows in CMD, the process is similar:

.\windows\setup

When prompted, provide the directory in your local machine you wish to be accessible from the virtual machine. For example, if you cloned your homework directory to /Users/username/Documents/hw-username or C:\Users\username\Documents\hw-username, enter that. A management script should appear in the root directory of this repository.

Manage

The manage script provides three commands. To run it, you must be in the root directory of this repository. Use the following command on macOS:

./manage.sh command

And on Windows:

NOTE: Please make sure you run the manage script from Command Prompt, and NOT PowerShell.

.\manage command

There are three commands you can run through the manage script.

  • The first, start, starts the container up in the background. The container should continue running until you shut down your computer, exit docker, or kill the container manually.
  • Next is shell, which simply opens a shell inside the virtual machine. This is where you can run standard linux commands, such as g++ or valgrind.
  • The last is stop, which manually shuts down the virtual container.

Note: Valgrind Suppression

To determine the correct valgrind suppression in the future, refer to this manual. Running it on a sufficiently complex piece of leak-free code will yield most of the necessary configurations.

Note: Hypervisor on Windows

If you plan to using Docker and Virtual Box as a fallback, please be aware of what you will need to do to switch between the two systems. You'll have to toggle the Hypervisor:

  • Docker: Hypervisor ON
  • VirtualBox: Hypervisor OFF

Here's how you can do that on Windows:

  1. Press Windows key + X and select Apps and Features.
  2. Scroll down to the bottom and click Programs and Features link.
  3. Then click the Turn Windows Hypervisor on or off link on the left pane.

This issue ONLY concerns Windows users.

docker's People

Contributors

camerondurham avatar noahbkim avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.