docker image重启_Harbor | 用于存储分发Docker镜像的企业级Registry服务器
1关于HarborHarbor是一个开放源代码容器映像镜像表,可通过基于角色的访问控制来保护镜像,扫描镜像中的漏洞并将镜像签名为受信任。简单来说,Harbor就是一个开源的镜像管理仓库,类似Github一样,可以让我们存放一些镜像文件。即便我们以后换了一台服务器,也可以随时从Harbor仓库拉取镜像,不需要依赖本地服务器。相对Registry,Harbor具有很多优势:提供分层传输机制,...
1
关于Harbor
Harbor是一个开放源代码容器映像镜像表,可通过基于角色的访问控制来保护镜像,扫描镜像中的漏洞并将镜像签名为受信任。
简单来说,Harbor就是一个开源的镜像管理仓库,类似Github一样,可以让我们存放一些镜像文件。即便我们以后换了一台服务器,也可以随时从Harbor仓库拉取镜像,不需要依赖本地服务器。
相对Registry,Harbor具有很多优势:
- 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以 用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
- 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界 面可以支持登陆、搜索功能,包括区分公有、私有镜像。
- 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分 解。良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限, 具有更好的安全性。更多详见官网:https://goharbor.io
2
搭建Harbor镜像仓库
首先可以到下面的github链接里选择一个harborrelease版本下载。
下载链接:https://github.com/goharbor/harbor/releases
上传并解压
tar -zxf harbor-offline-installer-v1.10.1.tgz
修进入harbor
目录,使用vim harbor.yml
修改以下配置项:
#设置域名hostname: 192.168.101.11#设置http参数# http related confighttp: # port for http, default is 80. If https enabled, this port will redirect to https port port: 8090 #设置管理员密码harbor_admin_password: evan123#屏蔽https#https: # https port for harbor, default is 443 # port: 443
开启Docker Http访问权限
Docker默认是不支持http访问注册表,否则后面使用docker去访问harbor服务,会报如下错误:
http: server gave HTTP response to HTTPS client
所以需要先修改下/etc/docker/daemon.json配置:
{ "insecure-registries" : ["192.168.101.11:8090"]}
然后重启docker服务:
systemctl restart docker
启动Harbor
假如没有Docker环境,harbor会启动报错。前面也说过需要先安装Docker和docker-compose组件,大家可以搜索下相关的安装教程。
[root@manager-node harbor]# sh install.sh[Step 0]: checking if docker is installed ...Note: docker version: 19.03.7[Step 1]: checking docker-compose is installed ...Note: docker-compose version: 1.25.0[Step 2]: loading Harbor images ...Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
当启动Docker后,执行install.sh会自动完成安装:
[root@manager-node harbor]# sh install.sh...Creating network "harbor_harbor" with the default driverCreating harbor-log ... doneCreating harbor-portal ... doneCreating registry ... doneCreating redis ... doneCreating harbor-db ... doneCreating registryctl ... doneCreating harbor-core ... doneCreating nginx ... doneCreating harbor-jobservice ... done✔ ----Harbor has been installed and started successfully.----
访问Harbor并登陆
在浏览器输入上面我们配置的ip和端口192.168.101.11:8090,就会显示登录页面:
接下来我们用上面的账号密码登录下:
3
创建你第一个Harbor项目
创建项目,并使用Docker登陆Harbor
点击New会进入项目创建对话框,填入项目名称即可,访问级别我选择的public。
在使用Harbor之前,要在docker环境登陆Harbor服务。
[root@manager-node harbor]# docker login 192.168.101.11:8090Username: adminPassword:WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
对现有的Image打Tag,并发布到Harbor
[root@manager-node credit-facility]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcredit-facility-image latest 28948b936fac 2 days ago 130MB
这里选择credit-facility-image打个标签,新标签为credit-facility:1.0
docker tag credit-facility-image:latest credit-facility:1.0
使用Harbor的ip地址和前面创建好的项目名称credit-facility进行发布。
[root@manager-node harbor]# docker push 192.168.101.11:8090/credit-facility/credit-facility-imageThe push refers to repository [192.168.101.11:8090/credit-facility/credit-facility-image]21f243c9904f: Pushededd61588d126: Pushed9b9b7f3d56a0: Pushedf1b5933fe4b5: Pushedlatest: digest: sha256:86a6289143d0a8a4cc94880b79af36416d07688585f8bb1b09fd4d50cd166f46 size: 1159
OK,我们已经成功上传镜像到Harbor仓库了。
拉取Image到服务器
先把之前本地创建的镜像删除,以免混淆,然后查看本地镜像:
[root@manager-node harbor]# docker image rm 192.168.101.11:8090/credit-facility/credit-facility-image:latestUntagged: 192.168.101.11:8090/credit-facility/credit-facility-image:latestUntagged: 192.168.101.11:8090/credit-facility/credit-facility-image@sha256:86a6289143d0a8a4cc94880b79af36416d07688585f8bb1b09fd4d50cd166f46
[root@manager-node harbor]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE
从Harbor仓库拉去镜像,并在本地镜像列表验证:
[root@manager-node harbor]# docker pull 192.168.101.11:8090/credit-facility/credit-facility-image:latestlatest: Pulling from credit-facility/credit-facility-imageDigest: sha256:86a6289143d0a8a4cc94880b79af36416d07688585f8bb1b09fd4d50cd166f46Status: Downloaded newer image for 192.168.101.11:8090/credit-facility/credit-facility-image:latest192.168.101.11:8090/credit-facility/credit-facility-image:latest
[root@manager-node harbor]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZE192.168.101.11:8090/credit-facility/credit-facility-image latest 28948b936fac 2 days ag
OK,到这里的话,我们的镜像已经成功安装到本地了,这样即便我们以后换了一台服务器,也可以随时从Harbor仓库拉取镜像,不需要依赖本地服务器。
如果你想了解更多Docker容器相关,欢迎参加8月7日晚的公开课。本次公开课主要围绕Docker容器技术入门和应用实战,系统介绍Docker容器技术、在企业中应用、以及网络管理、储存卷管理和部署Nginx、PHP、MySQL、Redis实战。
作者:Evan Leung
ID:Evan Leung 分 享
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)