refactor the docker support