6. Docker 本地镜像发布到私有库
文章目录
- 6. Docker 本地镜像发布到私有库
- 1. 将本地镜像推送到私有库详细步骤:
- 2. 最后:
本地镜像发布到私有库流程图:
Docker Registry 是什么:
官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流。
Docker hub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。
Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。
1. 将本地镜像推送到私有库详细步骤:
- pull 下载/拉取 镜像Docker Registry(私有镜像仓库):
[root@localhost ~]# docker pull registry
- 运行私有库Registry,相当于本地有个私有Docker hub:
docker run -d -p 5000:5000 -v /rainbowsea/myregistry/:/tmp/registry --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
[root@localhost ~]# docker run -d -p 5000:5000 -v /rianbowsea/myregistry/:/tmp/registry --privileged=true registry
[root@localhost ~]# docker ps
- 案例演示创建一个新镜像,ubuntu安装
ifconfig
命令:
从Hub上下载 ubuntu 镜像到本地并成功运行
[root@localhost ~]# docker run -it b1d9df8ab815 /bin/bash
原始(容器实例)的Ubuntu镜像是不带着 ifconfig 命令的
外网连通的情况下,为原始(容器实例)的 ubuntu 安装ifconfig命令并测试通过
root@34638f93b3be:/# apt-get update
root@34638f93b3be:/# apt-get install net-tools
root@34638f93b3be:/# ifconfig
安装完成后,使用 commit
创建我们自己的新镜像
公式: docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
命令: 注意是 在容器外执行 docker commit -m “ifconfig cmd add” -a=“RainbowSea” 34638f93b3be rsubuntu:1.2
[root@localhost ~]# docker commit -m "ifconfig cmd add" -a="RainbowSea" 34638f93b3be rsubuntu:1.2
启动我们的新镜像并和原来的对比
[root@localhost ~]# docker run -it 753af6142e72 /bin/bash
官网是默认下载的Ubuntu没有ifconfig命令
我们自己commit构建的新镜像,新增加了ifconfig功能,可以成功使用。
curl
验证私服库上有什么镜像
[root@localhost ~]# curl -XGET http://192.168.76.147:5000/v2/_catalog
- 将新镜像 rsubuntu:1.2修改符合私服规范的Tag
按照公式: docker tag 镜像:Tag Host:Port/Repository:Tag
注意:自己 host 主机IP地址,填写你们自己的,不要粘贴错误,O(∩_∩)O
使用命令 docker tag 将 rsubuntu:1.2 这个镜像修改为 192.168.76.147:5000/rsubuntu:1.2
docker tag rsubuntu:1.2 192.168.76.147:5000/rsubuntu:1.2
- 修改配置文件使之支持 http
[root@localhost ~]# cat /etc/docker/daemon.json
vim命令新增如下红色内容:vim /etc/docker/daemon.json
"insecure-registries": ["192.168.76.147:5000"]
{"registry-mirrors": ["https://t566dnbq.mirror.aliyuncs.com","https://3bx1o6se.mirror.aliyuncs.com","https://dockerhub.icu","https://docker.chenby.cn","https://docker.1panel.live","https://docker.awsl9527.cn","https://docker.anyhub.us.kg","https://dhub.kubesre.xyz","https://docker.mirrors.ustc.edu.cn"],"insecure-registries": ["192.168.76.147:5000"]
}
上述理由:docker 默认不允许http方式推送镜像,通过配置选项来取消这个限制。====> 修改完后如果不生效,建议重启docker
[root@localhost ~]# systemctl restart docker
重启之后,再次执行该命令:启动 私服
docker run -d -p 5000:5000 -v /rianbowsea/myregistry/:/tmp/registry --privileged=true registry
- push 推送到私服库:
docker push 192.168.76.147:5000/rsubuntu:1.2
- curl 验证私服库上有什么镜像2
[root@localhost ~]# curl -XGET http://192.168.76.147:5000/v2/_catalog
- 将私服当中的 rsubuntu,pull 到本地并运行
[root@localhost ~]# docker rmi -f 192.168.76.147:5000/rsubuntu:1.2 # 注意要带上 :1.2版本,不然,无法删除
[root@localhost ~]# docker rmi -f rsubuntu:1.2
[root@localhost ~]# docker pull 192.168.76.147:5000/rsubuntu:1.2 # 注意要带上版本号
[root@localhost ~]# docker run -it 192.168.76.147:5000/rsubuntu:1.2
2. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”