首先科普docker几种“仓库”概念,可分为:本地镜像,本地仓库,公有仓库(docker hub)
本地镜像:在把java程序打包成镜像,输出的镜像的位置就是本地镜像
公有仓库:一个叫docker hub的网站,类似于github,所有人都可以把自己的镜像上传上去,也可以使用别人的镜像
私有仓库:相当于自己建的docker hub,常用于不可公开的(例如公司),或者追求网速(镜像不像代码文件那么小)
用代码和github类比,本地仓库就是在本地硬盘的没用源码管理的一份代码文件,公有仓库就是github,私有仓库就是自建的git服务器例如bitbucket或gogs等
由于k8s运行镜像必须从仓库pull,公有私有仓库都行,但不能本地,所以以下说明如何在本机建私有仓库
本例使用的是docker自带的私有仓库registry:2
运行docker pull registry:2,下载registry:2的镜像
运行docker run -d -p 5000:5000 --restart=always --name registry registry:2,运行registry:2镜像
PS:端口设置了5000,也就是此仓库端口是5000,记着以后会用到
到此registry:2仓库运行了,可以push一个本地镜像测试
查询本地有此镜像
运行docker tag docker.io/springio/ewater:0.0.1 192.168.31.141:5000/springio/ewater:0.0.1,设置镜像的tag
其中tag后面的“docker.io/springio/ewater:0.0.1”,docker.io固定,springio/ewater:0.0.1就是上面看到的镜像的名称和TAG
后面的“192.168.31.141:5000/springio/ewater:0.0.1”,其中192.168.31.141:5000代表仓库的ip和端口
PS:这里写的不好,因为我也没太理解原理
修改后多了一行
运行docker push 192.168.31.141:5000/springio/ewater:0.0.1,把本地镜像push到仓库
其中192.168.31.141:5000/springio/ewater:0.0.1就是上面设置的tag
上传后,可以用registry:2的http接口看镜像目录