这篇需先说明一个问题:Docker镜像是什么?
是一种轻量级、可执行的独立软件包,包含运行某个软件所需的所有内容。把应用程序和配置依赖打包好形成一个可交付的环境。该打包好,可运行的环境就是images镜像文件。只有通过这个镜像文件才能才可生成Docker容器实例。
还需说明镜像的底层原理:UnionFS(联合文件系统)
特点:轻量级、分层且高性能的文件系统。支持对文件系统的修改作为一次提交来层层的叠加,同时可以将不同的目录挂载在同一个虚拟文件系统下。是Docker镜像的基础,镜像可以通过分层来进行继承,可基于基础镜像制作各种具体用途的应用镜像。
镜像分层的好处在于共享镜像,方便复制迁移。
注:Dokcer的镜像层都是只读权限,只有容器层是可写权限。当容器启动时,一个新的可写层被加载到镜像的顶部,这层即是“容器层”,容器层下的都是镜像层。
Docker commit 命令
提交容器副本,使之成为一个新的镜像。
docekr commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
在实际的情况中,我们更多是使用Dockerfile来生成新的镜像。
那做好的本地镜像如何发布到阿里云?
该图为网上找的流程图,仅供大家参考使用。
首先,我们需要登录阿里云,进入容器镜像服务下的个人实例,创建一个命名空间。(名字自定义)阿里云命名空间
然后创建镜像仓库,目前选择本地仓库(命令行上传镜像)。
仓库中有自带的操作命令,根据提示cp即可。(不要自己敲)
第一步,登录阿里云(username后为自己阿里云的用户名全名,输入的密码为创建命名空间时的密码)
第二步,将镜像通过tag一一对应
第三步,推送镜像到仓库
我们可在仓库看到上传的镜像,还可将本地的镜像删除,从阿里仓库下载回来。
如何将本地镜像发布到私有云?
相比阿里云,docker官方更推荐将镜像放在Dokcer Hub上,但受网速限制,阿里云取而代之。但阿里云属于公共镜像仓库,一些机密的文件显然不适合存放。所以创建一个本地私人仓库就显得十分重要。Docker Registry是官方提供的工具,可以用来构建私有镜像仓库。
首先拉取Registry镜像
运行Docker Registry 相当于本地有一个私有的Docker Hub。
curl验证私有库上有什么镜像
将要上传的镜像修改为符合私服规范的TAG标签
修改配置,使其支持http传送,在/etc/docker/daemon.json中加入第二行内容
需注意的是,两个json之间用逗号连接。若不生效则重启docker服务使生效。当然,私服库也需run一下。
推送到私服库
再次curl验证私服库有无镜像
拉取到本地并运行。当然,应先删除本地的该镜像。