Docker image to install and run a containerised ExoCAM (CESM1.2.1) on Fedora.
When first using this image, it is recommended to test correct installation before doing any production runs by running the simple CESM1.2.1 and ExoCAM examples under Usage.
- CESM1.2 User Guide
- CESM1.2 Website
- ExoCAM User Guide
- gcc/gfortran docs
- Docker build help
- Docker run help
- Install Docker desktop
- Ensure Docker desktop is running
- Download published image:
docker pull woodwardsh/exocam:latest
- Run container, noting the mounting of local dir
shared
to container/home/app/cesm/1_2_1/shared
for shared storage of model cases, input, scratch, and output:
docker run -it --rm --volume=${PWD}/shared:/home/app/cesm/1_2_1/shared woodwardsh/exocam:latest
# Options:
# -it interactive && TTY (starts shell inside container)
# --rm delete container on exit
# --volume mount local directory inside container
podman run -it --rm -v ${PWD}/shared:/home/app/cesm/1_2_1/shared --security-opt label=disable woodwardsh/exocam:latest
- Register for CESM repository access
- Clone repo & navigate inside:
git clone git@github.com:hannahwoodward/docker-exocam.git && cd docker-exocam
- Build image from Dockerfile, passing in CESM repo credentials as build args (~15 min):
docker build --build-arg SVN_LOGIN= --build-arg SVN_PW= -t exocam .
# Or, if debugging:
docker build --build-arg SVN_LOGIN= --build-arg SVN_PW= -t exocam . --progress=plain --no-cache
- Run locally built container, noting the mounting of local dir
shared
to container/home/app/cesm/1_2_1/shared
for shared storage of model baselines, cases, input, output, and tests:
docker run -it --rm --volume=${PWD}/shared:/home/app/cesm/1_2_1/shared exocam
# Options:
# -it interactive && TTY (starts shell inside container)
# --rm delete container on exit
# --volume mount local directory inside container
# -w PATH sets working directory inside container
- Start docker container via
docker|podman run ...
as above - In
MACH="docker"
xml config in$CCSMROOT/scripts/ccsm_utils/Machines/config_machines.xml
, editGMAKE_J
andMAX_TASKS_PER_NODE
to match your hardware resource
- In the container, run:
cd $CCSMROOT/scripts
./create_newcase -res f45_g37 -compset X -mach docker -case $CCSMCASES/test1
cd $CCSMCASES/test1
./cesm_setup
csh test1.clean_build && csh test1.build
csh test1.run
- In the container, run (see ExoCAM repo for more detailed instructions):
cd $CCSMROOT/scripts
./create_newcase -res f45_f45 -mach docker -compset E2000C4AQI -case $CCSMCASES/exo-aqua
cd $CCSMCASES/exo-aqua
sh exocam_setup setup -cloud-physics RK -config cam_aqua_fv -radiation-scheme n68equiv
./cesm_setup
csh exo-aqua.clean_build && csh exo-aqua.build
csh exo-aqua.run
- TODO
docker login && docker tag exocam woodwardsh/exocam && docker push woodwardsh/exocam