Giter Club home page Giter Club logo

azure-toolbox's Introduction

azure-toolbox

Docker Stars Docker Pulls

docker run -d -p 2211:22 -p 5901:5901 rcarmo/azure-toolbox

screenshot

NOTE: THIS IS IN HIATUS DUE TO THE INTRODUCTION OF AZURE CLOUD SHELL

Since the Azure Portal now provides a built-in HTML5 terminal with a working CLI and the option to run other tools like Terraform, this image is not going to be actively maintained moving forward, and is kept as a reference for further builds.

About

A standalone development environment to work on Azure solutions, containing:

  • An Ubuntu 16.04 LTS (Xenial) userland
  • A simple X11 desktop (using the Infinality font rendering engine) that you can access over VNC
  • Firefox and Google Chrome
  • Azure CLI 2.0
  • Visual Studio Code
  • Go 1.8
  • The Docker CLI tools

In addition, with the :java tag, you get:

And on top of that, with the (experimental) :ml tag, you get a full-blown deep learning environment:

  • Continuum Anaconda (Python 3.6)
  • CNTK (built for CPU only)
  • Tensorflow (built for CPU only)
  • Apache MXNet

Logging In

Login via SSH to port 2211 as user, password changeme. Once inside, remote.sh will launch the VNC server with a set of predefined resolutions (use xrandr -s <resolution> to resize the desktop - some VNC clients may need to reconnect, but TigerVNC seems to work fine in Windows, and so does the macOS VNC client)

Quickstart (NO AUTHENTICATION!)

docker run -d -p 5901:5901 rcarmo/azure-toolbox /quickstart.sh noauth

No need to use SSH, no VNC authentication. Great for trying it out -- but a bad idea if you expose Docker ports outside your machine.

If you're using a Mac, then don't use noauth and type changeme as a VNC password (the built-in VNC client rightfully dislikes null authentication options).

Typical Session (via SSH)

> docker run -d -p 2211:22 rcarmo/azure-toolbox
93b7f70b971468095ba737b1d942131362c9bd7281905f5e8924fd8ddf36300d 
> ssh -p 2211 -L 5901:localhost:5901 user@localhost
The authenticity of host '[localhost]:2211 ([127.0.0.1]:2211)' can't be established.
ECDSA key fingerprint is SHA256:Kizn3NWB7LNUjG6BejExMA5f9ZC+Ch4BkooADRgXKZ8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2211' (ECDSA) to the list of known hosts.
user@localhost's password:
$ sh renote.sh
You will require a password to access your desktops.

Password:
Verify:
xauth:  file /home/user/.Xauthority does not exist

New '93b7f70b9714:1 (user)' desktop is 93b7f70b9714:1

Starting applications specified in /home/user/.vnc/xstartup
Log file is /home/user/.vnc/93b7f70b9714:1.log
$
# you can now VNC to localhost:5901

Preserving Your Work

Just mount a data volume and work inside it. For instance, in Windows:

docker run -d -p 5901:5901 -v c:/Users/billg/Development:/home/user/Development rcarmo/azure-toolbox /quickstart.sh noauth

Preserving browser and editor settings is also doable. Just mount another volume as /home/user/.config and you should be set (it's probably best to copy the existing settings across first).

For instance, this is what I do to have the toolbox access my local Docker daemon, my local SSH keys and my development folder:

IMAGE=toolbox
#IMAGE=rcarmo/azure-toolbox:java
docker run -d \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v c:/Users/billg/_ssh:/home/user/.ssh \
    -v c:/Users/billg/OneDrive/Development:/home/user/Development \
    -p 5901:5901 $IMAGE /quickstart.sh noauth

Visual Studio Code stores its settings in ~/.vscode, so you can also mount that onto a host path (mind you, sharing configuration files with your host is not necessarily a good idea).

Security Considerations

Please note that this container exposes port 5901. I ordinarily use VNC exclusively over SSH, but Windows users may not have SSH installed or have trouble setting up the tunnel, so I decided to EXPOSE the port. Docker for Windows seems to only bind it locally, but your mileage may vary.

Also, the quickstart.sh script should not be considered a best practice -- if you're going to leave this running someplace, best do it properly.

If you don't pass noauth to quickstart.sh the VNC server will prompt for a password (which is changeme too), but that's hardly secure in practice - so if you run this container on a machine exposed to the Internet, don't publish port 5901.

Base Container

This is built upon desktop-chrome, a separate image I use as base for building similar development toolboxes. You'll find the original EXPOSE declaration, SSH setup, user profile skeleton and quickstart.sh source there.

Changelog

  • 2017-10-18: General refresh, moved to OpenJDK 9
  • 2017-08-17: General refresh
  • 2017-08-14: VS Code 1.15
  • 2017-08-04: General refresh
  • 2017-07-12: VS Code 1.14
  • 2017-07-09: Anaconda 4.4.0 (Python 3.6), Apache MXNet
  • 2017-06-09: VS Code 1.13, CNTK 2.0, Chrome 59, general refresh
  • 2017-05-01: Firefox 53, VS Code 1.11.2, Tensorflow 1.1.0, CNTK 2.0rc2, general refresh
  • 2017-04-07: Go 1.8.1, VS Code 1.11.1, Keras, general refresh
  • 2017-03-26: New refresh (from new base image with updated VNC server), CNTK support
  • 2017-03-09: Refreshed browsers and VSCode
  • 2017-03-03: Added Leiningen, Go 1.8 and the Docker CLI tools
  • 2017-02-28: NodeJS and the old azure-xplat-cli are no longer included, since the Azure CLI 2.0 has been released. Upgraded to Chrome 56, Firefox 51.

azure-toolbox's People

Contributors

rcarmo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

azure-toolbox's Issues

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.