网站下载的文件在哪里,全屋定制品牌,哈尔滨排名seo公司,德米萨erp近期工作中发现用到的容器镜像越来越多#xff08;不多的时候没考虑过镜像仓库的问题#xff09;#xff0c;同一个容器镜像也存在多个版本#xff0c;那么镜像仓库的搭建需求就涌现出来#xff0c;本文就目前的几个常用镜像仓库的搭建进行介绍#xff0c;我们可以根据需… 近期工作中发现用到的容器镜像越来越多不多的时候没考虑过镜像仓库的问题同一个容器镜像也存在多个版本那么镜像仓库的搭建需求就涌现出来本文就目前的几个常用镜像仓库的搭建进行介绍我们可以根据需要选择合适自己的就好。01—官方标配Registry私有仓库Docker Hub作为Docker默认官方公共镜像如果想要自己搭建私有镜像残酷官方也提供Registry镜像使得我们搭建私有仓库变得非常简单。所谓私有仓库也就是在本地局域网搭建的一个类似公共仓库的东西搭建好之后我们可以将镜像提交到私有仓库中。这样我们既能使用 Docker 来运行我们的项目镜像也避免了商业项目暴露出去的风险。下面就是详细的基于Registry搭建私有仓库的步骤首先我们可以准备两台服务器这里我有两台Linux的云服务主机阿里云腾讯云他们的角色如下主机名角色备注edc-aliyun-serverregistry-server部署registry容器edc-tecentcloud-serverregistry-consumer从registry服务器上下载镜像使用搭建镜像仓库 首先下载Registry镜像并启动docker pull registry 然后运行一个Registry镜像仓库的容器实例docker run -d -v /edc/images/registry:/var/lib/registry
-p 5000:500
--restartalways
--name xdp-registry registry 最后在客户端查看镜像仓库中的所有镜像curl http://your-server-ip:5000/v2/_catalog 这里返回的json数据代表暂无任何仓库因为我们还没有上传任何镜像。上传镜像 首先为了让客户端服务器能够快速地访问刚刚在服务端搭建的镜像仓库默认情况下是需要配置HTTPS证书的这里简单在客户端配置一下私有仓库的可信任设置让我们可以通过HTTP直接访问# vim /etc/docker/daemon.json 加上下面这一句这里的your-server-ip请换为你的服务器的外网IP地址{ insecure-registries : [ your-server-ip:5000 ]
}PS如果不设置可信任源又没有配置HTTPS证书那么会遇到这个错误error: Get https://ip:port/v1/_ping: http: server gave HTTP response to HTTPS client. 为了使得配置生效重新启动docker服务# systemctl restart docker 其次为要上传的镜像打Tagdocker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname 最后开始正式上传镜像到服务端镜像仓库docker push your-registry-server-ip:5000/your-image-name:tagname 这时我们可以再次通过访问API验证镜像仓库的内容 下载镜像 下载镜像就很简单了使用pull命令即可docker pull your-server-ip:5000/your-image-name:tagname 如果想要知道要下载的镜像都有哪些tag或版本可以通过下面这个api来获取curl http://your-server-ip:5000/v2/your-image-name/tags/list 02—共享源头Docker Hub公共仓库程序员们都喜欢用Git如果把Registry私有仓库比作GitLab的话那么Docker Hub公共仓库就类似于GitHub这是一个公共的共享的镜像仓库平台我们可以像在GitHub上随意得clone公共的开源项目一样pull镜像到本地。下面就是基于Docker Hub建立公共仓库的步骤注册账号创建仓库 首先你得去docker hub上注册一个账号 其次注册完成登录之后就可以创建一个Repository例如这里我创建了一个名为xdp-service-runtime的仓库 客户端操作 创建完仓库我们就可以在客户端上登录方式一docker login
方式二docker login --usernameyour-account 登录之后就可以为镜像打Tagdocker tag xdp-service-runtime:2.2 edisonsaonian/xdp-service-runtime:2.2 打完Tag就可以推送到远程仓库啦docker push edisonsaonian/xdp-service-runtime:2.2 这时便可以到docker hub上查看Repository的信息 当然我们可以在另外的客户端上拉取这个刚刚上传的镜像了 怎么样是不是很EasyEnjoy03—企业最爱Harbor企业级私有仓库Harbor是VMware公司开源的一个企业级Docker Registry项目项目地址https://github.com/vmware/harborHarbor作为一个企业级私有Registry服务器提供了更好的性能和安全提升了用户使用Registry构建和运行环境传输镜像的效率。虽然Harbor和Registry都是私有镜像仓库的选择但是Harbor的企业级特性更强因此也是更多企业级用户的选择。Harbor实现了基于角色的访问控制机制并通过项目来对镜像进行组织和访问权限的控制也常常和K8S中的namespace结合使用。此外Harbor还提供了图形化的管理界面我们可以通过浏览器来浏览检索当前Docker镜像仓库管理项目和命名空间。有关Harbor的架构可以参考阅读这一篇《Harbor整体架构》一文里面讲述了Harbor的6大核心组件构成有兴趣的朋友可以一读。下面列出了Harbor的搭建过程一些准备工作1下载离线安装包 Harbor提供了两种安装方式一种是在线安装包因此包很小另一种是离线安装包因此包很大570MB。这里选择下载离线安装包下载地址https://github.com/goharbor/harbor/releases 这里选择版本为v1.7.0下载完成后传输到你的服务器上并解压tar zvxf harbor-offline-installer-v1.7.0.tgz 2安装docker 如果还没有安装docker那么请先安装docker已安装则跳过。# yum install docker
# systemctl start docker.service 3安装docker-compose 这里选择Github源sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-compose
sudo chmod x /usr/local/bin/docker-compose 验证docker-compose -version PS如果想要卸载docker-compose请执行以下命令sudo rm /usr/local/bin/docker-compose自签TLS证书 虽然对于所有要求配置HTTPS的要求我都是比较抵触的不过考虑到去年公司官网被攻击并且还被Google列入黑名单导致公司官网好几天不可用我们信息中心遭受了很大的压力因此还是老老实实地为所有有需要的地方配上HTTPS吧。当然这里演示的只是我们自己创建的证书实际生产环境中我们切记还是需要去阿里云或者其他云服务器厂商申请免费或收费的证书。 此小节内容主要参考自Harbor的HTTPS配置文档 1创建存放证书的目录mkdir -p /data/cert/
cd /data/cert/ 2创建自签名证书key文件并生成证书请求 注意这里reg.edisonedu.com需要替换为你的域名我这里是随便取的会在后面更改DNS。openssl genrsa -out reg.edisonedu.com.key 4096
openssl req -x509 -new -nodes -sha512 -days 365 \ -subj /CTW/STTaipei/LTaipei/Oexample/OUPersonal/CNreg.edisonedu.com \ -key reg.edisonedu.com.key \ -out reg.edisonedu.com.crtHarbor安装与配置在解压的harbor目录中编辑harbor.cfg文件修改以下内容......
hostname reg.edisonedu.com
ui_url_protocol https
ssl_cert /data/cert/reg.edisonedu.com.crt
ssl_cert_key /data/cert/reg.edisonedu.com.key
harbor_admin_password EdisonZhou123456
...... 以上只是一些最基本的配置你还可以配置例如SMTP邮件的设置可以自己去摸索。 接下来就是执行准备这个harbor.cfg了在harbor目录下执行以下命令./prepare 然后再执行install这个shell脚本进行install./install.sh 它会经历好几个步骤加载Harbor镜像初次安装耗时较长、准备运行环境、通过docker-compose启动harbor有兴趣的童鞋可以看看harbor目录下的docker-compose.yml文件等。 我们可以通过docker-compose ps命令查看启动起来的docker实例 可以看到整个harbor容器实例群包括了管理服务、数据库服务、Job服务、日志服务以及Portal网页入口默认是80端口服务等。 为了能在你的开发机上能够访问到我们这个域名你需要改一下Windows的hosts文件C:/Windows/System32/drivers/etc/hosts如果你用的阿里云那么你可能还需要开放一下端口号80和443端口# your server ip
47.102.140.255 reg.edisonedu.com 这下我们可以在本地开发机上打开浏览器访问reg.edisonedu.com了可以看到Harbor的管理平台登录页面了 使用刚刚在配置文件里面配置的密码登录之后可以看到如下管理界面 为了进行后面的演示这里我们创建一个私有项目 然后再创建一个项目管理员用户 最后为test项目添加新创建的这个用户作为项目管理员由于我们后续会演示镜像上传所以这里设为管理员如果只是拉取镜像可以设为开发人员角色如果只是看看那可以只设置为游客角色 接下来我们就会在另一台主机中访问这台服务器上部署的Harbor私有镜像仓库了。Docker主机访问Harbor 1首先由于我们这里是自签证书不是受信任的所以我们要做一些准备工作才能在普通主机上访问到刚刚部署的Harbor镜像仓库。注意这一部分的操作在另外的一台主机上非我们刚刚部署的Harbor的服务器上面 准备工作一创建Harbor服务域名的证书文件夹mkdir /etc/docker/certs.d/reg.edisonedu.com -p 准备工作二设置Hosts匹配我们设置的假域名vim /etc/hosts 加上一行47.22.232.200 reg.edisonedu.com #替换为你的Harbor服务器外网IP 准备工作三将Harbor服务器上的证书拷贝要访问Harbor仓库的主机上 这一工作你可以选择直接通过SFTP软件将reg.edisonedu.com.crt从Harbor服务器上拷贝到客户机刚刚创建的文件夹中/etc/docker/certs.d/reg.edisonedu.com也可以通过scp命令去拷贝总之拷贝过来就行。这里我通过scp去拷贝scp root47.22.232.200:/data/cert/reg.edisonedu.com.crt /etc/docker/certs.d/reg.edisonedu.com 2其次登录到Harbor镜像仓库由于Docker的默认源是docker hub所以刚刚我们需要改host这里需要登录自己的源仓库docker login reg.edisonedu.com 3然后就跟刚刚我们在docker hub中的步骤一样了假设我们要push一个镜像到镜像仓库首先打个Tagdocker tag xdp-service-runtime:2.2 reg.edisonedu.com/test/xdp-service-runtime:2.2 PS这里我们打的tag加上了私有项目名test 打完Tag就可以push到镜像仓库了docker push reg.edisonedu.com/test/xdp-service-runtime:2.2 推送完后我们可以到Harbor的Web管理界面中验证 4推送完之后我们想在其他docker主机中pull下来呢docker pull reg.edisonedu.com/test/xdp-service-runtime:2.2 5如果想退出我们的私有仓库docker logout reg.edisonedu.com其他补充如果想要继续更改harbor配置那么改完后需要重新初始化Harbordocker-compose down -v # 暂停Harbor实例群
./prepare # 生成配置文件根据 harbor.cfg 配置生成docker-compose文件。
docker-compose up -d # 后台启动Harbor实例群 想要暂停和重启Harbordocker-compose stop # 暂停 Harbor
docker-compose start # 启动 Harbor 不用Harbor了那么可以彻底删除Harbor的数据和镜像文件# 彻底地删除 Harbor 的数据和镜像 rm -r /data/database rm -r /data/registry04—小结本文总结了流行的几个镜像仓库的搭建步骤并给出了基本使用示例。个人感觉对于个人开发者或开源社区而言docker hub主要提供的是类似于github的共享公共仓库当然docker hub也有提供私有仓库。对于小团队而言官方提供的Registry项目可以帮助小团队快速地构建起自己的镜像仓库把精力更多放在快速迭代上面。而对于中大规模的团队Harbor的企业级特性更加适合此类型的团队使用。参考资料李振良《1天掌握Docker》Harbor《Installation Guide》自由早晚乱余生《Docker企业级镜像仓库Harbor的搭建与维护》Ivanzz《Harbor整体架构》杨振涛《Harbor介绍与实践》点个在看少个bug ?