kubernetes Harbor私有镜像仓搭建

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开始下载依赖的镜像,检测并按照顺序依次启动各镜像

  • Harbor依赖的镜像及启动服务如下:
############################################## 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

kubernetes Harbor私有镜像仓搭建_第1张图片

客户端登录Harbor

kubernetes Harbor私有镜像仓搭建_第2张图片

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镜像上传

 

 

你可能感兴趣的:(kubernetes,docker,hive,docker,kubernetes)