DO NOT USE IN PRODUCTION
FOR WORKSHOP AND TUTORIAL USE ONLY
Running the TDS Docker Container
If this is your first time running docker containers on your machine, please see the "First Time Users of Docker" section near the end of this document.
Before running the docker container, choose a location on disk where you would like to run the workshop materials. For example, let's use
/home/username/Desktop/workshop. Set an environmental variables called
Go to your $WORKSHOP_HOME directory and create the following files, making sure they have read and write access for
cd $WORKSHOP_HOME mkdir data mkdir -p content/thredds mkdir tomcat-logs chmod -R o+wr .
Once this is complete, the following command will allow you to test the docker image with access to the Tomcat and TDS logs, as well as the TDS configuration files:
docker run --rm -it -p 8080:8080 -p 8443:8443 -v $WORKSHOP_HOME/content/thredds:/usr/local/tomcat/content/thredds -v $WORKSHOP_HOME/tomcat-logs:/usr/local/tomcat/logs -v $WORKSHOP_HOME/data:/data unidata/tds-workshop:latest
The TDS configuration files are located in
the tomcat log files will be located in
and the data directory will be
The data inside the docker container will be located in
so make sure any
<datasetRoot> elements in your catalogs reference
/data as the top level data directory. Note that the data associated with the default catalogs remains in the same location (
<TDSCONTENTDIR>/thredds/public/) and the default catalogs work without modification.
These three locations are specified on the command line with the -v options. If any of these directories are not empty, they will override what is in the container. The -v option does not utilize the union filesystem, so it's a complete overwrite of a directory, just like
Note if you have run this docker container before, you may want to update to get the latest changes first:
docker pull unidata/tds-workshop:latest
Access your TDS using
where host-ip is the ip address of your docker host. This can be found using
A tomcat user "workshop" has been defined with password "MeUser". This user has the roles of manager-gui, tdsConfig, and tdsMonitor.
This container has been configured with SSL enabled using a self-signed certificate. If you use this in production, which you SHOULD NOT DO, you will look like a total N00B because your self signed certificate has "please hack me" all over it (no really, it does...check it out in your browser and see for yourself). Do not embarrass yourself by using this container on a production server.
First Time Users of Docker
The goal of this section is to install docker and get the docker daemon running. Once the daemon is running and ready to go, you may start executing the docker run commands found at the beginning of this document.
First Time Users on Windows
Follow the instructions here
We have had issues using boot2docker on windows (as recommended in the link above), so another option is to create a linux based Virtual Machine and follow the instructions for "First Time Users on Linux."
First Time Users on Linux
Follow the instructions for your platform as listed here
MacOSX (Unidata recommended workflow with docker-machine)
Download and install [VirtualBox] (https://www.virtualbox.org/wiki/Downloads)
Download and install docker-machine
Create a host virtual machine to run docker images - let's call it docker-host-tds:
docker-machine create --driver virtualbox docker-host-tds
This downloads a boot2docker linux iso image and starts up a lightweight vm using virtualbox. This virtual machine will run the Docker daemon, which will allow us to run docker containers. If you would like to see the information about your host VMs, use:
Note that the VM must be running and you mush have the correct correct environmental variables set:
eval "$(docker-machine env docker-host-tds)"
To verify that the machine was created and is indeed running, run:
Now you should be able to run the docker commands and play with the tds workshop container! Note that you will need to execute the eval command in each new terminal you wish to use to run docker.