Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker Registry是一个无状态,高度可扩展的服务器端应用程序,可存储并允许您分发Docker镜像。在许可的Apache许可下,Registry是开源的。
为什么要使用Docker Registry?
- 严格控制图像的存储位置
- 完全拥有您的图像分发管道
- 将图像存储和分发紧密集成到您的内部开发工作流程中
接下来将详细介绍Docker本地私有仓库(Docker Registry)的搭建:
步骤一:准备Linux虚拟机
准备两台安装有Linux(本人环境为CentOS 7)虚拟机,并配置好网络(可参考VMware以NAT模式配置Linux网络)。
本人虚拟机网络环境配置如下:
虚拟机一(作为开发机):192.168.29.159
虚拟机二(作为Docker Registry):192.168.29.158
步骤二:升级Linux(192.168.29.158、192.168.29.159)
- 使用yum命令更新Linux
yum -y update
步骤三:安装Docker并启动(192.168.29.158、192.168.29.159)
- 使用yum命令安装Docker
yum install -y docker
- 使用以下命令启动Docker
service docker start
步骤四:下载Registry镜像并启动(192.168.29.158)
- 使用以下命令下载registry镜像
docker pull registry
- 使用命令查看docker镜像
docker images
镜像如图:
- 使用命令启动registry镜像
docker run -d -p 5000:5000 registry
注:默认情况下,会将仓库存放于容器的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以一般情况下会指定本地一个目录(本人目录为/root/dale/docker/registry)挂载到容器的/tmp/registry下,因此可以使用如下命令:
docker run -d -p 5000:5000 -v /root/dale/docker/registry:/tmp/registry registry
启动后,如图代表启动成功:
参数解释:
-d:后台运行
-p:将容器的5000端口映射到宿主机的5000端口
-v:将容器内的目录/tmp/registry映射到宿主机的/root/dale/docker/registry
步骤五:下载hello-world镜像(192.168.29.159)
- 使用命令下载hello-world镜像
docker pull hello-world
若如图所示,代表下载镜像成功:
步骤六:测试(192.168.29.159)
- 使用命令修改镜像tag
docker tag docker.io/hello-world 192.168.29.158:5000/hello-world
修改后查看镜像如图:
- 使用命令修改docker配置文件(如若不知文件位置,可参考Docker配置文件位置)
使用命令修改docker配置文件,并添加参数--insecure-registry=192.168.29.158:5000
vi /etc/sysconfig/docker
docker配置文件如图:
修改完毕后,需要重启docker,如图
service docker restart
- 上传镜像到私有仓库
docker push 192.168.29.158:5000/hello-world
如图代表镜像上传成功:
- 删除本地镜像
使用命令删除本地镜像192.168.29.158:5000/hello-world
docker rmi 192.168.29.158:5000/hello-world
删除如图:
- 从私有镜像仓库下载镜像
使用命令下载私有仓库上的镜像192.168.29.158:5000/hello-world
docker pull 192.168.29.158:5000/hello-world
下载如图:
查看docker本地镜像如图:
步骤七:查看私有仓库镜像(192.168.29.158或192.168.29.159)
- 使用命令查询私有仓库上有哪些镜像名
curl -XGET http://192.168.29.158:5000/v2/_catalog
查询如图:
- 使用命令查看镜像有哪些版本
curl -XGET http://192.168.29.158:5000/v2/hello-world/tags/list
查询如图:
如果你已经能按步骤操作到此结束,那么恭喜你,Docker私有仓库搭建成功,请尽情使用吧!
参考资料: