- Introduction
- Requirements
- Building CloudStream-enabled Software
- Using CloudStream
- CloudStream Runtime Options
- CloudStream Option Syntax
- Other Resources
CloudStream is a Docker-based framework/container for Application Streaming. Application Streaming describes the process by which software is run on a remote server but is accessed on a device as though it were running locally. The CloudStream framework provides an environment pre-built to provide remote application access via a web browser. All that is required to use CloudStream is include your own Linux software!
CloudStream is a Docker image, which other images may be built on. As a result, using CloudStream requires a local Docker installation. Instructions for installing Docker may be found here.
All you need to build a CloudStream-enabled Docker image is a custom Docker configuration file, called a
Dockerfile
. This section describes Dockerfiles in general, and how to construct a Dockerfile which uses CloudStream.
CloudStream provides the technology stack required for an application-streaming-enabled environment. This includes a virtual desktop environment which can be accessed via a web browser. Using CloudStream is as simple as defining a new project which inherits from the CloudStream Docker image, unidata/cloudstream
. This allows a project to inherit the application-streaming technology stack and default CloudStream options.
How do you define a project which inherits from unidata/cloudstream
? With a custom Docker configuration file.
Docker images are built using configuration files referred to as a Dockerfile
. Examples of various types of Dockerfiles may be found in the examples/
directory, and a robust Dockerfile template is also included in the project. An annotated Docker configuration template, Dockerfile.template
, may be found as part of the CloudStream project. It is also directly viewable here. This template is designed to serve as a starting point for building your own Docker image.
The Docker organization also provides documentation for building and configuring your own Dockerfile. This documentation may be found at their website.
Once a custom Dockerfile has been configured, building your project is as simple as:
$ docker build -t [your project name] -f [your Dockerfile] .
To run this custom Docker image, you would run the following from the command line:
$ docker run -it -p 6080:6080 [your project name]
Your Docker image would then be viewable by entering the following address in a web browser:
[IP address of the machine running the image]:6080
CloudStream has several options built-in, enumerated below. These options are inherited by any CloudStream-based Docker images, although these options may be removed or have their default values changed by a developer. Additionally, it is easy for a developer to add additional options for use in their CloudStream-based image. The variables and their syntax are described below.
###Options
Below are the options available for use with unidata/cloudstream
. They are organized into three groups, Information Options
, Security Options
and Display Options
.
Option | Note |
---|---|
HELP | Displays the CloudStream help file, plus any custom README information defined in a dependent package using the README_FILE environmental variable. |
VERSION | Displays the CloudStream version, plus any custom version specified by a dependent image. See Dockerfile.template for the syntax used to specify this. |
COPYRIGHT | Displays the CloudStream copyright, plus any custom COPYRIGHT information defined in a dependent package using the COPYRIGHT_FILE environmental variable. |
Option | Note |
---|---|
USEPASS | Specifies a password to be used for the session. Default: no password . |
SSLONLY | Disable unencrypted http-based connections. Off by default. Set to TRUE to enable. |
SHARED | Allow for multiple, concurrent connections. Off by default. Set to TRUE to enable. |
Option | Note |
---|---|
SIZEW | The width of the display provided by CloudStream. Default: 1024 |
SIZEH | The height of the display provided by CloudStream. Default: 768 |
CDEPTH | The color depth of the display provided by CloudStream. Default: 24 |
You will notice in all of our examples, we consistently pass the
-it
option to Docker. This tells Docker to run as aninteractive shell
, and is required forunidata/cloudstream
to work properly.
In addition to the CloudStream options outlined above, you will need to expose port 6080
using the Docker flags -p
or -P
. The -p
option allows you to specify a specific port mapping, e.g. -p 6081:6080
would result in a running docker image accessible on port 6081
. The -P
option specifies a dynamic port mapping, where Docker will find an available port. You would then need to use docker ps
to determine what port was selected. This would work as follows:
$ docker run -it -P unidata/cloudstream
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
47de1934777f unidata/cloudstream "/bin/sh -c /home/${C" 52 seconds ago Up 51 seconds 0.0.0.0:32768->6080/tcp big_pare
In this example, we see that we would connect to the unidata/cloudstream
-based image by opening a web browser and going to [Server IP Address]:32768
.
CloudStream options are handled by passing particular environmental variables to the unidata/cloudstream image (or any derived image) when it is run by Docker. This is accomplished using the -e
flag provided by Docker, and the basic syntax is as follows:
$ docker run -it -e OPTION1=VALUE2 -e OPTION2=VALUE2 unidata/cloudstream
Read below for examples using specific options available to CloudStream.
$ docker run -it -e VERSION=TRUE unidata/cloudstream
CloudStream Version: "1.0.0 - development" Thu Jan 28 21:23:27 UTC 2016
$ docker run -it -p 6080:6080 -e USEPASS=password1234 -e SIZEW=800 -e SIZEH=600 -CDEPTH=16 unidata/cloudidv
For more information on Docker syntax and using CloudStream as a basis for other application-streaming applications, see the following resources:
- Unidata CloudStream project page: https://github.com/Unidata/cloudstream/
- Unidata CloudIDV project page: https://github.com/Unidata/cloudidv/
- Dockerfile Syntax: https://docs.docker.com/engine/reference/builder/