  Docker is a popular tool for developers and organizations to package, deploy,
and run applications in a lightweight, portable container. One key component of
Docker is the Dockerfile, a simple text file that specifies the steps needed to
build a Docker image. While Dockerfiles are easy to create and use, creating an
optimal image is complex in particular since it is easy to not follow the best
practices, when it happens we call it Docker smell. To improve the quality of
Dockerfiles, previous works have focused on detecting Docker smells, but they
do not offer suggestions or repair the smells. In this paper, we propose,
Parfum, a tool that detects and automatically repairs Docker smells while
producing minimal patches. Parfum is based on a new Dockerfile AST parser
called Dinghy. We evaluate the effectiveness of Parfum by analyzing and
repairing a large set of Dockerfiles and comparing it against existing tools.
We also measure the impact of the repair on the Docker image in terms of build
failure and image size. Finally, we opened 35 pull requests to collect
developers' feedback and ensure that the repairs and the smells are meaningful.
Our results show that Parfum is able to repair 806 245 Docker smells and have a
significant impact on the Docker image size, and finally, developers are
welcoming the patches generated by Parfum while merging 20 pull requests.
