Here is one way to do a simple on-docker-host backup, just substitute your own database name, site name, and locations for the compose file and backup destinations:
Mariadb database and site_config.json backup:
docker compose -f /compose/file/location/docker-compose.yml exec db sh -c 'exec mariadb-dump --single-transaction -uroot -p"$MYSQL_ROOT_PASSWORD" database_name_here' | gzip > /on/host/backup/destination/database-$(date +%Y%m%d_%H%M%S).sql.gz
docker compose -f /compose/file/location/docker-compose.yml cp backend:/home/frappe/frappe-bench/sites/site_name_here/site_config.json /on/host/backup/destination/site_config-$(date +%Y%m%d_%H%M%S).json
Files backups:
docker compose -f /compose/file/location/docker-compose.yml exec backend sh -c 'exec tar cf - ./sites/site_name_here/private/files' | gzip > /on/host/backup/destination/Private-Files-$(date +%Y%m%d_%H%M%S).tar.gz
docker compose -f /compose/file/location/docker-compose.yml exec backend sh -c 'exec tar cf - ./sites/site_name_here/public/files' | gzip > /on/host/backup/destination/Public-Files-$(date +%Y%m%d_%H%M%S).tar.gz
Mariadb Restore:
gzip -d /on/host/backup/source/database-date_time_of_backup_here.sql.gz
docker compose -f /compose/file/location/docker-compose.yml cp /on/host/backup/source/database-date_time_of_backup_here.sql db:/tmp
docker compose exec -i db sh -c 'exec mariadb -uroot -p"$MYSQL_ROOT_PASSWORD" database_name_here < /tmp/database-date_time_of_backup_here.sql'
(then copy line for the encryption key from the site_config-date_time_of_backup_here.json into site_config.json if needed)
Files restore:
docker compose -f /compose/file/location/docker-compose.yml cp /on/host/backup/source/Public-Files-date_time_of_backup_here.tar.gz backend:/home/frappe/frappe-bench
docker compose -f /compose/file/location/docker-compose.yml cp /on/host/backup/source/Private-Files-date_time_of_backup_here.tar.gz backend:/home/frappe/frappe-bench
docker compose -f /compose/file/location/docker-compose.yml exec backend tar xzf Public-Files-date_time_of_backup_here.tar.gz
docker compose -f /compose/file/location/docker-compose.yml exec backend tar xzf Private-Files-date_time_of_backup_here.tar.gz