I wanted a 20mA CC load, so I chose 4V at R2-pin2 and 200ohm for R2
This is a sensible start but your circuit shows R2 as the potentiometer. So ignoring that, the real problem you have is the LM358 - it can only work with an input range from 0 volts to Vcc - 2 volts so immediately you have a problem with the design. The LM358 won't operate with the parameters you have chosen.
The next potential problem is the MOSFET. If you want 4 volts at the source (across the 200 ohm resistor) then, to activate the MOSFET to any reasonable degree you need to gate to be at least 3 volts higher and both your power supply and LM358 are incapable of acheiving that (7 volts on the gate).
The MOSFET data sheet says that its VGS(th) is 2 volts and this means that if gate to source was 2 volts it would guarantee at least 250 uA and clearly this isn't enough.
If you chose R2 to be 100 ohms and therefore designed for 2 volts across it, the LM358 would have to produce an output level of 5 volts and, on a 5 volt supply this won't begin to happen.
If you read the data sheet for the LM358 it might be able to scrape an output level of 3 volts and that leaves you very little headroom for anything else. Consider using either a rail-to-rail opamp or a BJT instead of the MOSFET.