In the second fab command (docker exec -d notebook jupyter notebook) is there a reason you’re running the notebook again? docker run in the previous command should spawn a notebook on port 8888, so the second command just tries to do it again. When you exec into the containers, are you doing it with exec -it /bin/bash?
As a workaround for now, I would add the option “-u root” to docker run. This will override the user in the image and run the notebook as root.