环境准备:
装了docker的linux服务器(我用的最便宜的腾讯云,windows环境应该也可以,但是本人没尝试)
第一步:准备基础镜像
从头开始做一个镜像太麻烦了,所以我们一般先根据自己的需要下载一个基础的镜像,可以在docker hub(https://hub.docker.com/)里搜一个pull下来,或者在某个前男友的服务器里下载一个,总之找到一个就行。
我是从学院集群已经提供的镜像里选择了一个tar包。
如果是下载的tar包,需要放到linux服务器里,运行docker load命令加载为镜像。
第二步:写Dockfile
一听要写什么file就容易心生烦躁,尤其最讨厌这个时候谁跟你说“这个很简单”,所以我觉得最好的办法还是直接看看Dockerfile什么样,有个直观的印象,然后在这个基础上按照自己需求改。
这么一看还确实不太复杂,我们逐行分析一下哈:
FROM 后面跟我们的基础镜像(我这里是general/base:latest,如果不确定你的镜像名,可以通过docker images看一下)
COPY 字面意思啊,就是复制,因为我这里需要安装多个python库,就一起放在requirements.txt里了,然后需要在pip install之前copy一下requirements.txt的内容。
RUN 后面跟你想在终端运行的命令(我这里是除了python库之外,还想安装这个libbz2-dev)。
RUN这个也是个RUN,同上,想在终端运行的命令(这不就把刚才copy的内容用pip install安装啦)。不好意思,是不是忘了说Dockerfile应该放在哪里了?
就放在你需要制作环境的linux服务器里(我就是在我的腾讯云服务器里)。
第三步:制作新镜像
写好Dockfile之后,就可以制作新镜像啦!
在有Dockerfile的路径下运行命令:
sudo docker build . -t [镜像名](我这里演示的叫“general/test”,如下图)
正常运行没问题的话就会显示后面“Sending build contest to Docker daemon”
镜像创建成功会显示“Successfully built xxxxxxxx”(如下图)
第四步:保存新镜像为tar文件
运行命令:
sudo docker save -o [保存的tar文件名字.tar] [目标镜像名]
如下图:
这样就可以顺利保存啦(如下图)
但是你可能看到这个文件现在是红色的,所以如果需要传输到自己的电脑上的话,需要用chmod命令改一下权限,我一般比较懒,一律“chmod 777 xxx”。
至此,你的新镜像就做好了。