Docker使用Harbor本地仓库

前提
主机以及地址
k8smaster1 192.168.56.29 (harbor安装在该主机上)
k8smaster2 192.168.56.27
k8snode1 192.168.56.26
Harbor服务地址 harbor.k8smaster1.com

1.安装docker、docker-compose
步骤略过,未安装的可以按照文章末尾参考资料安装。三台主机都需要安装docker

2.下载harbor安装包

#下载离线包
wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.1.tgz
#解压
tar xvf harbor-offline-installer-v2.1.1.tgz  -C /home/ && cd /home/harbor/
#创建目录
mkdir -p /home/harbor/certs /home/harbor/data

3.修改harbor配置文件
这里加压后有些是harbor.yml.tmpl这个名字,我们直接改成harbor.yml就可以了,harbor.k8smaster1.com这个是服务地址,hostname:port就可以访问到harbor仓库

mv /home/harbor/harbor.yml.tmpl /home/harbor/harbor.yml
vi /home/harbor/harbor.yml

...
#我指定的地址是hostname: harbor.k8smaster1.com
hostname: harbor.k8smaster1.com

http: 
  port: 80

https:
  port: 443
  certificate: /home/harbor/certs/harbor.k8smaster1.com.crt #需要自己生成的证书文件
  private_key: /home/harbor/certs/harbor.k8smaster1.com.key #需要自己生成的证书文件

#admin用户的登录密码
harbor_admin_password: Harbor12345

database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 1000

#数据存放的目录
data_volume: /home/harbor/data
...

生成配置文件里面所需要的证书文件以及客户端证书,harbor.k8smaster1.com是harbor服务的地址。
我们这里会生成三个文件:harbor.k8smaster1.com.cert、harbor.k8smaster1.com.crt、harbor.k8smaster1.com.key

openssl req -newkey rsa:4096 -nodes -sha256 -keyout /home/harbor/certs/harbor.k8smaster1.com.key -x509 -out /home/harbor/certs/harbor.k8smaster1.com.crt -subj /C=CN/ST=BJ/L=BJ/O=DEVOPS/CN=harbor.k8smaster1.com -days 3650

openssl x509 -inform PEM -in harbor.k8smaster1.com.crt -out harbor.k8smaster1.com.cert

4.安装harbor

./install.sh 

在这里,如果我们安装完之后,后面又修改了配置文件则需要使用以下命令来重新生成程序文件

./prepare
docker-compose down -v
docker-compose up -d

5.访问harbor的ui界面
https://192.168.56.29
Docker使用Harbor本地仓库_第1张图片
新建一个项目,这里我已经创建过了
Docker使用Harbor本地仓库_第2张图片

6.docker访问harbor仓库
在另外主机k8smaster2、k8snode1上面配置hosts信息

#配置hosts
vi /etc/hosts
192.168.56.29    harbor.k8smaster1.com

在k8smaster1主机上面配置仓库,测试http方式登录harbor仓库。

#配置仓库,使用http方式登录则需要配置仓库信息
vi /etc/docker/daemon.json
{
  "insecure-registries":["harbor.k8smaster1.com"]
}
#重启服务
systemctl daemon-reload
systemctl restart docker
#登录harbor,使用admin账号登录
docker login http://harbor.k8smaster1.com

注意1:在这里有时候重启docker会导致harbor服务down掉,这个时候可以重新启动一下

cd /home/harbor/common/config
docker-compose restart

注意2:重启docker有时候会报错,这个时候看下配置文件有没有写错,找不到问题在哪的话可以将这个文件/etc/docker/daemon.json改回去,再重新启动,没继续报错再改回来重新启动就好了。
这里直接访问成功。
Docker使用Harbor本地仓库_第3张图片
在k8snode1主机上面配置证书,测试https方式登录harbor仓库。

#在k8snode1主机上创建目录,harbor.k8smaster1.com目录对应仓库服务地址的hostname或者ip
mkdir -p /etc/docker/certs.d/harbor.k8smaster1.com/
#在k8smaster1主机上面将证书文件复制到k8snode2主机上去
scp /home/harbor/certs/* [email protected]:/etc/docker/certs.d/harbor.k8smaster1.com/
#重启k8snode1主机上的docker服务
systemctl daemon-reload
systemctl restart docker
#使用https的方式访问仓库,账号admin
docker login https://harbor.k8smaster1.com

Docker使用Harbor本地仓库_第4张图片

7.将镜像打包push到harbor仓库
以下在k8snode1主机上操作

#给docker添加一个国内镜像源
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
#重启docker
systemctl daemon-reload
systemctl restart docker
#拉取镜像
docker pull nginx
#重新打包镜像。harbor.k8smaster1.com这个是我们harbor服务地址;local-repository这个是我们harbor创建的仓库
docker tag nginx:latest harbor.k8smaster1.com/local-repository/mynginx:v1
#登录仓库
docker login https://harbor.k8smaster1.com
#推送镜像
docker push harbor.k8smaster1.com/local-repository/mynginx:v1

推送完成
Docker使用Harbor本地仓库_第5张图片
在harbor的ui界面查看我们推送的镜像
Docker使用Harbor本地仓库_第6张图片
至此,操作完成。

参考资料:(第一个缺少了证书的配置;第二个资料操作不是很明了,对着操作可能会出现一些问题)
k8s搭建安装 Harbor 私有镜像仓库(详细)
使用Harbor搭建Docker私有仓库并建立访问(http与https自签名方式)

你可能感兴趣的:(容器,docker,运维,私有仓库)