docker容器的自定义修改并重新构建镜像
前言
在上篇文章中,我们已经实现了VS code的无缝连接docker,却依旧存在着一些问题。比如它需要安装pylint方便调试,但是每次stop 容器之后,重新启动又需要重新安装,不可谓不麻烦。而且我发现它也需要重新安装VS code server,这是一个严重影响生产力的过程。所以目前的需求就变了如何作一些自定义的修改,并让这些修改永久性的保存。那答案当然是自定义的构建镜像啦,它可以让我们在构建的实践使用容器的过程中,将所做的更新持续化保存到自定义镜像。
自定义修改
在这里,我手动做了两个修改,一个是安装pylint,一个是更新pip。

提交更改
docker commit -m="install pylint" -a="chauncey" tf chauncey/tf
如上命令,将所有对容器的操作都保存至自定义镜像chauncey/tf中。
测试效果
- 停止当前容器
docker stop tf
- 使用自定义镜像创建容器
docker run --gpus all -itd --name tf --rm -v ~/Project:/root/Project chauncey/tf
- 使用VS code远程连接,观察pip版本和pylint的安装情况。

如上图,我们发现pip已经是最新的版本。而且细心小伙伴会发现,连接容器时以及没有了install Dev container的提示了,这说明我们的VS code也已经预设安装进了镜像。
用 docker commit 保存容器现状适合临时排错、救回手工修改或快速验证想法,但不适合当作长期的镜像构建流程。容器里执行过哪些命令、安装了什么包和删除了哪些文件,新接手的人无法从 commit 后的镜像里还原。验证成功后应把修改写回 Dockerfile,固定基础镜像和依赖版本,再从干净环境重新构建一次。
可用性说明:本文发布于 2020 年 1 月,距今已超过五年。文中涉及的软件版本、接口、下载地址、命令参数和操作界面可能已经发生变化,部分方案在当前环境下可能失效。请结合官方最新文档核对后再操作,生产环境使用前务必先行验证。
版权声明: 本文首发于 指尖魔法屋-docker容器的自定义修改并重新构建镜像(https://blog.thinkmoon.cn/post/703-notes-docker/) 转载或引用必须申明原指尖魔法屋来源及源地址!
评论
使用 GitHub 账号登录后即可留言,支持 Markdown。