镜像发布到docker私有库
1.Docker Registry
- 官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢,并且具有被阿里云取代的趋势,不太主流
- Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像
- Docker Registry是官方提供的工具,可以用于构建私有镜像仓库
2.将本地镜像推送到私有库
2.1下载镜像Docker Registry
命令:
docker pull registry
2.2运行私有库Registry,相当于本地有个私有Docker Hub
命令:
docker run -d -p 5000:5000 -v /asule/myregistry/:/tmp/registry --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
-d:后台守护进程
-p:指定端口映射(注意大写的P是随机端口映射)
2.3.案例演示创建一个新镜像,ubuntu安装ifconfig命令
- 从Hub上下载ubuntu镜像到本地并成功运行
- 原始的ubuntu镜像是不带ifconfig命令的
- 外网连通的情况下,安装ifconfig命令并测试通过
首先在容器中安装ifconfig
命令1:apt-get update
命令2:apt-get install net-tools
2.4安装完成后,commit我们自己的镜像
- 容器外执行(注意:不要关闭容器)
命令:
docker commit-m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
2.5curl验证私服库上有什么镜像
命令:
curl -XGET http://192.168.207.163:5000/v2/_catalog
2.6将新镜像asuleubuntu:1.2修改成符合私服规范的tag
命令:
docker tag 镜像:TAG Host:Post/Repository:Tag
自己host主机的IP地址
2.7修改配置文件使docker私服库支持http
由于docker的私服库做了安全加固,一般默认使不支持http形式的推送的,需要做一些配置取消这个限制
进入配置文件命令:
vim /etc/docker/daemon.json
添加语句:"insecure-registries":["192.168.207.163:5000"]
不要忘记逗号
建议重新启动docker
2.8push推送到私服库
命令:
docker push 192.168.207.163:5000/asuleubuntu:1.2
2.9curl验证私服上有什么镜像2
命令:
curl -XGET http://192.168.207.163:5000/v2/_catalog
从第一次验证到现在已经有了asuleubuntu
2.10pull到本地并运行
- 先将本地的192.168.207.163:5000/asuleubuntu:1.2删除,以免影响pull测试
- 从私服库获取
命令:
docker pull 192.168.207.163:5000/asuleubuntu:1.2
- run启动容器,并测试ifconfig成功