将本地docker容器制作为镜像,并上传至云镜像库实战

在上一篇文章中,我们以搭建php,nginx开发环境为例详细介绍了怎样在docker容器中定制搭建自己最需要,最常用的开发环境,完成了“光盘”内容的制作。而接下里,我们就要将这些内容“刻在光盘上”,并上传到我们的“云光盘库”,只要村里通了网,我们就可以在不同的电脑上随时随地的把“光盘”从“云光盘库”给push下来。当然,我口中的光盘其实就是docker中的镜像了。
闲话少说,咱们开始。接下来我会分几步来介绍实战过程。

准备阶段

首先你要明白docker中的三个概念:镜像容器仓库

  • 镜像:是一个特殊的文件系统(为了达到使用者对系统的某些特定需求而创建的),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。通俗点说,镜像的概念就相当于是面对对象编程中的==“类”==的概念。
  • 容器:如果说镜像相当于“类”的话,那么容器就相当于是某个“类”的==“实例化对象”==。镜像是特定文件系统静态化的定义,而容器是镜像动态化的运行实例对象。更通俗点说,镜像就好比是初版的设计图纸,而容器就是根据设计图纸设计出来的事物。容器可以被创建,运行,暂停,删除,并生成新镜像等操作。
  • 仓库:构建容器生成镜像之后,镜像很容易在本地宿主机上运行,而如果想要在其他设备上使用这个镜像,我们就需要一个能够集中存储,并且随时分发的镜像云系统,这项功能我们称之为docker registry.通俗点说,这个功能的设计初衷和git对于代码的存储管理是异曲同工的,所以你可以把这个概念视为docker镜像版的git功能。

注意:docker软件提供了docker registry的功能,我们也需要选择一个“云端”来存储我们的镜像。就类似于git中的github这些公共代码存储管理平台。docker官方提供了gitHub这个官方镜像托管平台,但由于国内墙太厚的原因,如果你的镜像超过100M,那么镜像的上传速度会让你哭上三天三夜。所以,我们就选择国内最大的,也是最职业的阿里云容器镜像服务来进行我们镜像的上传,托管。

第一步 针对目标容器,对其进行镜像生成

输入命令:docker ps -a,获取当前容器运行信息:
在这里插入图片描述
能够获取容器的id等信息。
使用命令:

docker commit -m "提交镜像描述信息" -a "指定镜像作者" 要提交的容器id 作者名称/仓库名称:版本号

举例如下:

docker commit -m "the first version" -a "caozhennan" 3548c2acfb96 caozhennan/nginx-php:1.14.0-7.2.24

其中,镜像的版本号命名并不是随便为之的,是有原则的,可以参考下面链接内容:
https://supereagle.github.io/2017/07/26/docker-image-name-convention/
完成之后,再次输入docker images,就可以看到已经打包出来的镜像,如图:
在这里插入图片描述

第二步 将镜像上传至镜像库(本文以阿里云镜像库为例)

首先大家要明白,针对每个镜像库,都有用户名和密码验证制度,验证完成之后,本地的镜像库就能够和线上镜像库连接,从而进行镜像的下载和推送。
1.首先登录阿里云,申请阿里云镜像库的账号密码进行登录。网址为:https://cr.console.aliyun.com/cn-beijing/instances/repositories
2.进入镜像库首页后,首先根据自己要上传的镜像名称创建仓库,如图:
在这里插入图片描述
3.创建完毕之后,返回本地终端,首先进行远程托管docker镜像库登录,输入命令:

sudo docker login --username=russell_cao registry.cn-beijing.aliyuncs.com

输入密码验证成功之后,开始上传镜像,输入命令:

更改镜像tag名称:

sudo docker tag [ImageId] registry.cn-beijing.aliyuncs.com/dev_environment/nginx-php:[镜像版本号]

上传镜像:

sudo docker push registry.cn-beijing.aliyuncs.com/dev_environment/nginx-php:[镜像版本号]

毕竟是国内,还是阿里云,上传速度那必须杠杠滴。上传完毕之后,如图:
在这里插入图片描述
(大家从事php开发的可以使用命令
sudo docker pull registry.cn-beijing.aliyuncs.com/dev_environment/nginx-php:[镜像版本号]来获取我的镜像0.0)

注意:docker search 镜像名称命令只能搜索dockerHub上的镜像,其他镜像库的不能用这命令搜索。

结尾

至此,将自己定制的容器生成为镜像,并且把镜像推送到国内阿里云镜像库也逐步进行了讲解。包含前几篇的内容:
1.MAC中mnmp(mac+nginx+msql+php)开发环境的配置搭建
2.docker容器中php开发环境的搭建实战

综合这一篇文章,我们从docker的安装使用,到容器的运行,定制,再到镜像的生成上传,全家桶已经被我们get到了。
有什么意见,请大家积极评论,共同探讨。

猜你喜欢

转载自blog.csdn.net/caozhennan824/article/details/105628969