MC/DC Container Build & Development¶
Building from Source¶
Run builds from the root directory of the MC/DC repository.
cd /path/to/MCDC
ls containers/Dockerfile
ls pyproject.toml
Docker¶
docker build -f containers/Dockerfile -t mcdc:dev .
Docker Compose¶
docker compose -f containers/docker-compose.yml build
Podman¶
podman build -f containers/Dockerfile -t mcdc:dev .
Apptainer¶
Option A:
apptainer build --sandbox mcdc_sandbox docker://ghcr.io/cement-psaap/mcdc:dev
Option B:
docker build -f containers/Dockerfile -t mcdc:dev .
docker save mcdc:dev -o mcdc.tar
scp mcdc.tar user@host:~/
apptainer build --sandbox mcdc_sandbox docker-archive://mcdc.tar
LLNL Storage Setup¶
If you see:
lsetxattr: operation not supported
Option A:
podman --root /var/tmp/$USER/containers/storage run --rm -it mcdc:dev
Option B:
mkdir -p ~/.config/containers
# create storage.conf with overlay config
Troubleshooting¶
lsetxattr error¶
Cause: Podman storage on network filesystem.
setgroups 65534 failed¶
Cause: Rootless Podman user mapping.
permission denied¶
Fix:
podman run --rm -it --user root mcdc:dev
Out of memory (Apptainer)¶
Use sandbox mode.
HYDU_create_process error¶
Use:
mpirun -launcher fork -n 4 python input.py
For Developers¶
Pushing to the Registry¶
One-Time Setup
Generate token with
write:packagesLogin:
echo "TOKEN" | docker login ghcr.io -u USER --password-stdin
Building and Pushing
On Apple Silicon:
docker build --platform linux/amd64 -f containers/Dockerfile -t mcdc:dev-amd64 .
docker tag mcdc:dev-amd64 ghcr.io/cement-psaap/mcdc:dev
docker push ghcr.io/cement-psaap/mcdc:dev
Making the Package Public
Go to org packages page
Find
mcdcChange visibility to Public
File Overview¶
containers/
├── Dockerfile
├── docker-compose.yml
└── README.md