Docker私有仓库部署
一、介绍
Harbor(港口,港湾)是一个用于存储和分发Docker镜像的企业级Registry服务器。
除了Harbor这个私有镜像仓库之外,还有Docker官方提供的Registry。相对Registry,Harbor具有很
多优势:
- 提供分层传输机制,优化网络传输 Docker镜像是是分层的,而如果每次传输都使用全量文件(所以
用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定
传输的对象。 - 提供WEB界面,优化用户体验 只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界
面可以支持登陆、搜索功能,包括区分公有、私有镜像。 - 支持水平扩展集群 当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分
解。 - 良好的安全机制 企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,
具有更好的安全性。
二、安装
Harbor依赖Docker环境,故在安装Harbor之前需要确保docker环境正确安装。docker安装参考:Docker基础概念介绍及安装。
2.1 安装docker-compose
- 下载docker-compose
sudo curl -L https://github.91chifun.workers.dev/https://github.com//docker/compose/releases/download/1.21.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- 增加执行权限
sudo chmod +x /usr/local/bin/docker-compose
- 验证
docker-compose -version
2.2 安装Harbor
这里用v1.9.2版本(配置简单),最新版本需要配置ssl,可参考官网进行配置。
- 下载安装包:harbor-offline-installer-v1.9.2.tgz
- 上传压缩包并解压
tar -xzf harbor-offline-installer-v1.9.2.tgz
mkdir /usr/local/soft
mv harbor /usr/local/soft
cd /usr/local/soft/harbor
- 修改配置
vi harbor.yml
hostname: 192.168.63.5
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
- 安装harbor
./prepare
./install.sh
- 启动harbor
docker-compose up -d #启动
docker-compose stop #停止
docker-compose restart #重新启动
2.3 访问Harbor
默认账户/密码:admin/Harbor12345
http://hostname:port
三、打包镜像
- 给镜像打上标签
docker tag nginx:1.13.7 192.168.63.5:80/iot/web
- 推送镜像
docker push 192.168.63.5:80/iot/web
如果遇到以下错误:The push refers to repository [192.168.63.5/iot/web] Get https://192.168.63.5:80/v2/: http: server gave HTTP response to HTTPS client。则说明Docker没有将Harbor加到信任列表中。
- 给Docker添加Harbor信任列表
vi /etc/docker/daemon.json
追加以下内容:
"insecure-registries": ["192.168.63.5:80"]
再次推送镜像,提示权限不足
denied: requested access to the resource is denied
。则需要先登录Harbor,再推送镜像。
- 登录Harbor
docker login -u 用户名 -p 密码 192.168.63.5:80
出现如下提示则说明登录成功~
WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning.
See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
- 再次推送镜像,Harbor页面出现推送结果