已删除的Docker镜像,如何从容器创build新的?

我用docker rmi <imgid> -f意外删除了我的机器上的所有docker rmi <imgid> -f但幸运的是容器完好无损。 当我尝试从容器使用docker commit 575985d354ef ubuntu_16_10:dsktop创build图像docker commit 575985d354ef ubuntu_16_10:dsktop它给出以下错误:

Error response from daemon: open /var/lib/docker/image/overlay2/imagedb/content/sha256/f31173ea77a68f70d897dba7623010a0471fa566a106c24a0e616278d37482e9: no such file or directory

如何从容器中创build新的图像?

您应该无法删除正在运行的容器使用的图像:

 $ docker run --name nginx-test -d nginx 351eb0e3a96b4375176358581a0afb460f57775382928860af764eb9d5e33b25 $ docker image rm nginx Error response from daemon: conflict: unable to remove repository reference "nginx" (must force) - container 351eb0e3a96b is using its referenced image 5e69fe4b3c31 

所以,如果你设法删除图像,你也打破了容器,因为docker使用分层的文件系统,重用容器RW层下的图像层。 这是说图像层不被复制每个容器的技术方式。

你需要重build你的图像。 现在应该考虑使用Dockerfile,而不是手工创build容器并提交结果。