For little ones this age, I like to distract/redirect them with something else, and tell them what they "can" do. He's at an age, too, when dumping things out is just the biggest fun. If you have a couple plastic baskets, put some safe toys in there and let him go for it. If you can make a shelf for him to take safe objects and toys from, even better.
Also, when you are really needing some containment, get out the pack-n-play and put your son in there for a while. Yes, he does need to run around, and you also need time to work, too. In the case of my son, I sometimes had to pop him in the umbrella stroller and strap him in when he was being unsafe. (We didn't have room for the pack-n-play; and this worked for us, esp. when he got older and started climbing onto the table.)
"No" is a hard one for kids to learn, because it's so subjective. I have found it better to help children through positive language cues and physically assisting them. This means telling them *what you want them to do*: instead of saying "no", I might tell a child "Stop now, please." and gently help them to stop their body. We are still teaching our childrenwhat these words mean, as well as what we want them to do when they hear them. Our kids will be in a learning process for a considerable time, so being physically present to offer some gentle guidance will physically reinforce what you are telling them to do.