点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
没有Docker镜像就没有Docker容器,在Docker中,镜像的重要性不言而喻,话不多说,就让我们与Docker镜像亲密接触吧!
Docker镜像可以理解为是一个包含OS文件系统和应用的模板或对象,Docker容器是其运行的实例,有镜像才能启动容器。Docker镜像是由文件系统叠加而成的,分层的结构,每一层都称为一个镜像。一个镜像可以放在另一个镜像的顶部,位于下面的称为父镜像,镜像栈最底部的镜像称为基础镜像。也就是说,可以以一个镜像创建一个新的镜像。Docker镜像保存在仓库中,而仓库存在Registry中。默认的Registry是由Docker公司运营的公共的Registry服务,即Docker Hub。也可以自建Registry来保存镜像。
docker commit创建镜像就像往版本控制系统里面提交变更,先创建一个容器,并在容器里面做修改,最后将修改提交为一个新的镜像。基于ubuntu基础镜像创建新的容器,再在容器里面安装apache2,如下图:镜像创建容器:docker run -i -t ubuntu bin/bash容器再docker commit提交创建新的镜像,指定镜像的用户名和仓库名(sunhuawei23/apache2),或增加标签(webserver),如下图:方法二:使用docker build命令和Dockerfile文件Dockerfile使用基本的基于DSL语法的指令来构建Docker镜像。Dockerfile文件创建后,就可以使用docker build命令基于该文件中的指令构建镜像。Dockerfile由一系列指令和参数组成。每条指令,都是大写字母,且后跟一个参数,如FROM ubuntu。如下图:Dockerfile中的指令会按顺序从上到下执行,每条指令都会创建一个新的镜像层,并对镜像进行提交。执行docker build命令,Dockerfile中的所有指令都会被执行且提交,并在成功结束后返回一个新的镜像。如下图:
构建镜像后,重要一环是如何共享和发布镜像。可以将镜像推送到Docker Hub(需要创建账号)或用户自己的私有Registry中。登录Docker Hub,使用docker login命令,如下:完成登录Docker Hub后,认证信息会保存供后面使用,用户认证信息保存在$HOME/.docker/config.json。可以使用dockerlogout命令从Registry服务器退出。镜像构建完毕和登录Docker Hub后,就可以将镜像上传至Docker Hub,通过docker push命令docker push sunhuawei23/static_web推送。如下:docker search命令来查找Docker Hub上公共的可用镜像。如下图:docker images命令列出本地镜像,如下图:Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会先从默认的镜像仓库Docker Hub拉取镜像。查找到镜像后,可以docker pull主动拉取镜像,拉取镜像时,没有指定标签的话,默认自动下载latest标签的镜像。如下:不再需要的镜像,可以删除,使用docker rmi命令,docker rmi sunhuawei23/apache2 sunhuawei23/static_web。如下图:至此,Docker镜像的全流程:创建、上传、下载、运行和删除已介绍完毕。Docker镜像是使用Docker的前提,大家平时可以多积累他人创建的镜像,也可以分享自己创建的镜像。