本地镜像发布到私有库
本地镜像发布到私有库流程
官方Docker Hub地址:https://hub.docker.com/ 中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。
Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。Docker Registry是官方提供的工具,可以用于构建私有镜像仓库
- Docker Registry
将本地镜像推送到私有库
下载镜像Docker Registry
1 | docker pull registry |
运行私有库Registry,相当于本地有个私有Docker hub
1 | docker run -d -p 5000:5000 -v d:/ives/myregistry/:/tmp/registry --privileged=true registry |
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
案例演示创建一个新镜像,ubuntu安装ifconfig命令
从Hub上下载ubuntu镜像到本地并成功运行
1 | docker run -it ubuntu /bin/bash |
原始的Ubuntu镜像是不带着ifconfig命令的
外网连通的情况下,安装ifconfig命令并测试通过
docker容器内执行上述两条命令:
1 | apt-get update |
安装完成后,commit我们自己的新镜像
1 | docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] |
命令:在容器外执行,记得
1 | docker commit -m="ifconfig cmd add" -a="ives" 592ed124af78 ifconfigubuntu:1.2 |
官网是默认下载的Ubuntu没有ifconfig命令
我们自己commit构建的新镜像,新增加了ifconfig功能,可以成功使用。
查看一下commit有没有成功
1 | docker images |
curl验证私服库上有什么镜像
curl http://127.0.0.1:5000/v2/_catalog
curl http://172.22.0.27:5000/v2/_catalog
可以看到,目前私服库没有任何镜像上传过。。。。。。
1 | StatusCode : 200 |
将新镜像ifconfigubuntu:1.2修改符合私服规范的Tag
1 | docker tag 镜像:Tag Host:Port/Repository:Tag |
使用命令
1 | docker tag ifconfigubuntu:1.2 127.0.0.1:5000/ifconfigubuntu:1.2 |
查看是否成功 docker images
1 | 127.0.0.1:5000/ifconfigubuntu 1.2 2cc733cce37f About a minute ago 116MB |
修改配置文件使之支持http
这一步看情况,新版本有可能已经不用
1 | { |
push推送到私服库
docker push 127.0.0.1:5000/ifconfigubuntu:1.2
curl验证私服库上有什么镜像
curl http://127.0.0.1:5000/v2/_catalog
pull到本地并运行
删除所有的
1 | docker rmi -f |
重新拉
1 | docker pull 127.0.0.1:5000/ifconfigubuntu:1.2 |
1 | docker run -it 镜像ID /bin/bash |