3bit Gray counter using D Flip Flops and logic gates
If you can use freely the logic gates, you can do this way:


Extract from the truth table the logic function that defines each bit of the next state from the previous state: \$ b_0(n) = f(b_0(n-1), b_1(n-1), b_2(n-1)) \$
Create the logic network that implement the 3 logic functions that you have found;
Now put it in a feedback from the output to the input of 3 D flip-flops, so then at each clock edge the state will be updated;
Reset the circuit to the 000 state.


If you really know logic gates, flip flops and counters, you can easily understand how this circuit works, and the rest is a breeze.