1.使用场景
公司正常都会搭自己的git仓库,像gitlab,gitea之类的,但是docker仓库不一定有,没有的话可能自己装运行环境,但如果有的话,不会用多可惜。
2.环境
我们模拟以下公司环境搭建,运用其实就是会在这些运行环境上面加一些插件,多一些配置;
比如,获取不单单只是下载了rabbitmq,还配置rabbitmq的延迟队列插件,就是这么个意思。
我的运行环境:
VMware fusion 虚拟机上跑centos 7 arm 架构下 跑docker ,再拉取镜像运行容器之类的
2.1 docker环境运行正常
以下这台我是专门拷贝了一台新的仅有docker环境的centos7 作为docker 仓库,模拟公司的镜像仓库
3.提交自定义镜像 (到本地)
从上文可见,这大小明显大了不只一点,为什么一个docker镜像的Ubuntu那么轻,而一个镜像iso文件好几G,也不是没有道理的,轻 轻在,只有基本的命令文件目录等。
至于docker的提交命令
docker commit -m="提交的信息" -a="author name 作者名" 容器ID 目标镜像名:版本(或者叫标签)
注意1:我们是对容器进行修改配置成一个更为强大的容器,并将其打包成镜像,而不是对镜像进行操作覆盖为另外的镜像,这一点需要注意!!
注:其实这个操作跟git提交到本地仓库的命令有一些像,git有pull,push ,docker 当然也有啦
但这只是在本地呀,我们毕竟是要让别人用的,是不是应该推送到到一个公共的仓库呢,接下来我们会进行git-github-gitee与 docker-dockerhub-aliyun 类比,
代码提交我们提交到github,可以,但是慢,所有有的人会放到gitee
docker提交到dockerhub,可以,但是慢,所有有的人提交到aliyun,可以理解
aliyun官网: 开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云
创建命名空间 -- 创建仓库---提交到本地仓库---获取脚本命令
命令1:
命令2 、3:
主要的含义就是声明
1.推到哪里的仓库: 阿里云的
2.要推哪一个上去 : imagesId是xxx的那个
3.推送
4.拉取自定义镜像
现在呢,来了一个新员工,开发组长给了地址,然后开始一顿操作
#登录
docker login --username=linshaozheng07 registry.cn-hangzhou.aliyuncs.com
#pull
docker pull registry.cn-hangzhou.aliyuncs.com/linsz-aliyun/my-ubuntu:1.0
作为新员工,我们再开一个centos-7
登录,拉取代码
能用,还挺好用 !!!不错不错!!!
我的名字叫my-ubuntu可能会让人有歧义,难道只能存放一个镜像?
注意:我们在aliyun 上面叫镜像仓库,虽然叫仓库,但是这个镜像仓库如果存放多个镜像会怎么样呢? 可以,但是要区别版本号
仓库,仓库,git仓库只要.git声明在外面,里面的东西管你是一个java项目还是两个java项目,无所谓
而,docker 仓库有一点点不一样,但还是可以存多个镜像的
我们测试一下:在docker repository 中 (以下是错误版本)
如果我们直接docker tag 两个不同的镜像,同时发,则最后一个有效,相当于前面的都被覆盖了, 则在aliyun上面只有各一个d4d的镜像redis
如果分开发,先发一个,push一下,再发一个,push一下,则依旧是最后这个有效,并且因为我们每次push到aliyun,我们本地也会保存一份像
的镜像,然后这种镜像由于我们的操作不当,出现了传说中的 虚悬镜像, 那个TAG 是<none>,这种需要注意。
正确的做法:
每次上传,修改一个唯一的id,就是那个 linsz-sources:1.1 的那个数字
在aliyun上面,则我们可以看到,二者都能存活下来
巧的是,这个镜像id,它都没有修改,都是同一个。
我们在新员工的docker上测试一下能不能用?
为了测试正确,我把原来的镜像一键删除了,大家慎用,除非你的镜像没有用
tag为1.2的是redis
很好,都能正常使用!!!
如果你嫌弃镜像这一坨太长了,改个名嘛
如
它改名,因为是有传imageId参数,但是我有好多个imageId一样的,它怎么知道改那个,所以就又搞了一个同imageId,名字叫my-ubuntu的,可以,很强!!!
5.自行创建docker仓库
上文上传到aliyun,我们能不能搭建自己的docker 仓库呢,当然可以
相当于,在docker上面搭建docker registry (仓库),把配置好的docker container 提交,并且push 到该仓库中,供他人调用
5.1 安装
5.2 启动
5.3 测试
在自己的电脑测,不要在虚拟机上测,有时候虚拟机没有curl 命令,正常来讲都ping得通,应该没啥问题
5.4 提交
我们使用那个加了vim的ubuntu上传
修改,以支持http推送镜像
记得重启虚拟机centos
5.5 推送
5.6 测试
5.7 新员工拉取
加http放行校验
重启centos-7
完全能用!!!!!
当然,如果想配置注册表的UI界面,也能搞
但是可能有的版本不支持,
至此,完结