Docker Fates Tutorial Repo
This repository contains the necessary Dockerfiles to build FATES Docker images that are then loaded to the NGEE-Tropics Docker Hub Repo. It is not necessary to clone this repo to run FATES Docker containers; this repo is intended for developers and maintainers of the FATES Docker images.
Quick Docker Introduction
Dockerfile: Analogous to a make
file in some ways. Used to direct the docker engine in the construction of Docker images.
Docker image: Read-only template containing layers with the necessary OS, environment variables, programs and applications for running a specific task.
Docker container: A running instance of a docker image. Containers are emphemeral and do not save run-time information locally.
Docker hub: Official online registry of Docker images. One of many places docker images may be hosted, however.
Repo Structure
cime_config_files: XML configuration files necessary for running host models in docker containers
docker: Contains the dockerfiles necessary to build docker images. Broken down by host model type (ELM, CLM).
Preparations
- Setup and test Docker
- Sign up with Docker Hub
Simple Test Run
- Pull docker image from Dockerhub:
docker pull ngeetropics/<dockerhub-repository-name>
- Run the container:
docker run --rm -ti --hostname=docker -u $(id -u):$(id -g) -v <your-local-scratch-directory>:/output -v <your-local-inputdata-dir>:/inputdata -v <your-local-scripts-dir>:/scripts ngeetropics/<dockerhub-repository-name>:latest
Notes:
- The docker images do not contain all the necessary input data, so access to an external data source is necessary.
- Scripts need to be adjusted to match the internal structure of the docker container. See wiki and template script for details.
See the wiki for more detailed information on using docker to build and run host land model cases.