搭建docker私服的几种方法
目录
使用docker registry
这是最简洁最原始的方式,使用docker官方的提供的registry来搭建私服。优点是纯净、简洁,缺点是没有可视化界面、没有权限验证模块。
安装和启动非常简单,只要执行下面这条指令就行
x
docker run -d -p 5000:5000 --name registry registry:2
不出意外的话,私服就算已经启动好了。我们试着push一个镜像测试是否成功:
x
# 把ubuntu镜像拉下来,用于测试
docker pull ubuntu
# 把ubuntu镜像打上标签,这样它就指向了自己的私服地址
docker image tag ubuntu localhost:5000/myfirstimage
# 推到私服
docker push localhost:5000/myfirstimage
虽然说registry没有界面可看,但我们依然可以通过registry的api来查看私服上面有什么内容
查看私服上有什么镜像
registry未提供权限验证,那我们想要给它加权限验证,总不能让私服裸奔在公网上吧,那咋办呢?一般做法是,用nginx
来代理registry,然后在nginx里面设置用户权限。关于如何在nginx上配置访问权限,建议参考nginx官方文档https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/。
使用harbor
harbor是一个功能强大的企业级registry服务器,支持多项目管理、用户管理、日志查询等功能特性,提供了美观的前端管理页面。缺点是太重了,启动harbor意味着要启动将近10个服务,对机器配置有一定要求,下图是harbor包含的所有服务。
具体如何安装这里就不再赘述,请参考官方主页https://github.com/goharbor/harbor。
使用nexus
nexus是java阵营用来搭建maven私服最常用的开源工具,它的其他功能似乎被忽略。但其实它非常强大,不仅支持maven包的管理,也支持docker、pypi、yum、npm…私服的搭建。如果你要搭建多种包的私服,而且想把它集成在一个平台里,那nexus是一个相当不错的选择。笔者所在公司,就是用nexus来实现maven包、docker容器、pypi、nodejs包的管理的。
具体如何安装请参考https://help.sonatype.com/repomanager3/installation/installation-methods
使用第三方平台
上面提到的私服方式都是在自己服务器上搭建registry服务,需要自己维护管理。但如果你不想自己搭,那可以选择一些第三方的平台。这里我推荐阿里云的镜像容器服务
,它支持私有仓库,而且免费。