harbor介绍
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然docker官方提供了公共的镜像仓库(Docker Hub),但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、界面管理、自我注册、镜像复制和中文支持等功能。
安装配置
docker: 19.03.12
docker-compose: 1.26.2
Harbor: v1.8.0
意:Harbor的所有服务组件都是在Docker中部署,所以官方安装使用Docker-compose快速部署,所以我们需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。
docker安装
1、安装一些必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2 vim wget vim net-tools
2、添加docker镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
sudo yum install -y yum-utils
sudo yum install docker-ce docker-ce-cli containerd.io
3、docker-compose安装:
> curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
> chmod +x /usr/local/bin/docker-compose
> docker-compose version
Harbor私有仓库安装
1、下载Harbor安装文件
从 github harbor 官网 release 页面下载指定版本的安装包。
离线安装包
> https://github.com/goharbor/harbor/releases
> tar xvf harbor-offline-installer-v2.2.1.tgz
如果服务器的网络带宽不行的话,建议使用离线安装,提前下载完上传到服务器
2、配置Harbor
进入harbor目录,打开harbor.yml进行配置
注意要注释掉: https 要不然会报ssl错误;
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
# hostname设置访问地址,可以使用ip、域名 ,不可以设置为127.0.0.1或localhost
hostname: xx.xx.xx.xx #修改host为本机ip
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 5000 #不想80口呗占用需要修改;
harbor_admin_password: Harbor12345
database:
# The password for the root user of Harbor DB. Change this before any production use.
password: only1234
# The default data volume
data_volume: /data
....
启动Harbor
修改完配置文件后,在的当前目录执行./install.sh,Harbor服务就会根据当期目录下的docker-compose.yml开始下载依赖的镜像,检测并按照顺序依次启动各镜像
############################################## docker images ###################################
goharbor/chartmuseum-photon v0.8.1-v1.8.0 60a4caf66227 14 months ago 113MB
goharbor/harbor-migrator v1.8.0 765880263e76 14 months ago 361MB
goharbor/redis-photon v1.8.0 66d7402d2770 14 months ago 103MB
goharbor/clair-photon v2.0.8-v1.8.0 7570a336afd5 14 months ago 164MB
goharbor/notary-server-photon v0.6.1-v1.8.0 e8552306a936 14 months ago 135MB
goharbor/notary-signer-photon v0.6.1-v1.8.0 9736ac6c508e 14 months ago 132MB
goharbor/harbor-registryctl v1.8.0 0ca3e2b624f5 14 months ago 96.2MB
goharbor/registry-photon v2.7.1-patch-2819-v1.8.0 1e7d99ccba24 14 months ago 81.3MB
goharbor/nginx-photon v1.8.0 4a4b48b32ae4 14 months ago 36MB
goharbor/harbor-log v1.8.0 e718bdc405a3 14 months ago 81.5MB
goharbor/harbor-jobservice v1.8.0 d47940dd883f 14 months ago 118MB
goharbor/harbor-core v1.8.0 b07a1a4be17f 14 months ago 135MB
goharbor/harbor-portal v1.8.0 76298a1ef089 14 months ago 42.9MB
goharbor/harbor-db v1.8.0 d1e0b3df3e95 14 months ago 140MB
goharbor/prepare v1.8.0 769ca785dab0 14 months ago 139MB
############################################### docker-compose ps####################################
Name Command State Ports
---------------------------------------------------------------------------------------------
harbor-core /harbor/start.sh Up (healthy)
harbor-db /entrypoint.sh postgres Up (healthy) 5432/tcp
harbor-jobservice /harbor/start.sh Up
harbor-log /bin/sh -c /usr/local/bin/ ... Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy) 80/tcp
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->80/tcp
redis docker-entrypoint.sh redis ... Up 6379/tcp
registry /entrypoint.sh /etc/regist ... Up (healthy) 5000/tcp
registryctl /harbor/start.sh Up (healthy)
启动完成后就可以访问刚刚在配置文件中设置的hostname。默认是80端口,如果端口占用,我们可以去修改harbor.yml文件中,对应服务的端口映射。
默认账号密码:admin,Harbor12345
启动完成后就可以访问刚刚在配置文件中设置的hostname。默认是80端口,如果端口占用,我们可以去修改harbor.yml文件中,对应服务的端口映射。
默认账号密码:admin,Harbor12345
客户端登录Harbor
Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制。
如果直接【上传】或【拉取】镜像会失败,因为默认为https方式。
所有客户端都需要添加这个配置,然后重启 docker 服务。
[root@docker01 ~]# vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"insecure-registries": ["192.168.11.10:5000"]
}
[root@docker01 ~]# systemctl restart docker # 重启docker服务
添加了 “insecure-registries”: [“192.168.11.10:5000”] 这行,其中192.168.11.10为内网IP地址。该文件必须符合 json 规范,否则 Docker 将不能启动。 如果在Harbor所在的机器重启了docker服务,记得要重新启动Harbor。
客户端登录Harbor
[root@DC-N3 /]# docker login http://192.168.6.40:8843 -u admin -p hsh.2019#
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
查看登录信息,这样客户端就可以直接拉取或者推送镜像了。
[root@docker01 ~]# cat ~/.docker/config.json
{
"auths": {
"192.168.11.10:5000": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.8 (linux)"
}
}
Docker push镜像上传