Apache supports virtual host configuration. There is plenty of information on how to set this up available at http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html and http://httpd.apache.org/docs/2.0/vhosts/mass.html. Just set this up in Apache with a dedicated IP address, then tell your clients to set their DNS records to point to the IP address in question. Their folder names on the server will need to match their domain name (or other matching criteria per the first link above).
With Tumblr, they likely have a single application running on the specified IP address which determines which site settings to use based on a CGI variable (server_name, usually). If each of your customer sites will be using their own webroot, then the Apache configuration should work for you. If you're hosting an application that they're all using, then you can have Apache listen for all requests on a dedicated IP address and then differentiate them within the application through the CGI variable.