Building a website is a good way of learning how websites are made up but that can require a lot of knowledge and website design experience if you're looking for something particular. There are ample amounts of tutorials on the most fundemental website design languages such as: HTML and CSS. Adding content and images and styling them with the help of a few guides is okay but once you start looking beyond that and look more into applications, functionality and interactivity; you go beyond the scope of those languages and more into more advanced languages such as JavaScript and PHP for example.
As for hosting, that is pretty much down to your requirements and what you think you will be needing. Obviously there is an abundance of webhosting companies such as HostGator, GoDaddy, Siteground, Hosting24 and One to name a few.
You would most likely benefit from using a hosting company that offers a free domain, otherwise you will have to buy the hosting/domain separately and then try and propogate them via name servers. Ideally you're looking for unlimited bandwidth, unlimited download space, you don't need to look into unlimited disk space as you won't be using a huge amount of memory for a portfolio. Whenver you look into separate control managements such as: Drupal, Joomla or Wordpress, you can be a little bit overwhelmed by the amount of content and features each platform offers and for a beginner, it can be come extremely convoluted.
Until you're comfortable with web hosting, domains and web design; look at a pre-configured portfolio package that allows you to edit content, upload/edit images and add new content without having to touch any code. Lots of them exist.
Apologies if this is considered 'grave digging'.