harbor私有仓库的搭建部署

1 、下载docker-compose ,移动到/usr/local/bin/目录下,并赋予运行权限

[root@server1 ~]# mv docker-compose /usr/local/bin/
[root@server1 ~]# chmod +x /usr/local/bin/docker-compose 
[root@server1 ~]# docker-compose version

2、下载并安装harbor

[root@server1 ~]# ls
harbor-offline-installer-v1.8.0.tgz
[root@server1 ~]# tar -zxf harbor-offline-installer-v1.8.0.tgz 
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common  docker-compose.yml  harbor.v1.8.0.tar.gz  harbor.yml  install.sh  LICENSE  prepare

harbor docker pull配置认证 docker harbor安装与配置_docker


3、配置harbor

解压之后,目录下会生成 harbor.conf 文件,该文件就是harbor的配置文件

[root@server1 harbor]# vim harbor.yml
# hostname设置访问地址,可以使用ip、域名,不可以设置为127.0.0.1或localhost
5 hostname = 172.25.83.1   #需要修改的内容。更改hostname为本机的IP地址。也可以写为域名,比如chen.org。只要前后一致即可(将后面172.25.83.1的地方换为chen.org)。

harbor docker pull配置认证 docker harbor安装与配置_docker_02


4、启动 Harbor

修改完配置文件后,在当前目录执行 ./install.sh

[root@server1 harbor]# ./install.sh

出现如下的界面,表示harbor启动成功

harbor docker pull配置认证 docker harbor安装与配置_配置文件_03


docker images

harbor docker pull配置认证 docker harbor安装与配置_配置文件_04


docker-compose ps

harbor docker pull配置认证 docker harbor安装与配置_nginx_05


6、web界面查看

启动完成后,我们访问刚设置的 hostname 即可 http://172.25.28.1

harbor docker pull配置认证 docker harbor安装与配置_docker_06


我们可以点击,右上角的English,将字体调整为中文

harbor docker pull配置认证 docker harbor安装与配置_docker_07

默认用户名和密码是:admin/Harbor12345

harbor docker pull配置认证 docker harbor安装与配置_nginx_08

点击"+项目",可以添加项目。我这里添加的项目的名称是my_harbor。并设置为私有项目,即只有登录了(login)的相关用户才可以进行pull和push的操作。如果勾选了"公开",则所有人都可以pull和push。

harbor docker pull配置认证 docker harbor安装与配置_docker_09

7.上传镜像172.25.28.1/my_harbor/rhel7:nginx

登陆login时,报错

[root@server1 harbor]# docker login 172.25.83.1
Username: admin   #默认用户名:admin
Password:         #默认密码:Harbor12345
Error response from daemon: Get https://172.25.83.1/v2/: dial tcp 172.25.83.1:443: connect: connection refused   #连接拒绝

这是因为 docker1.3.2 版本开始默认 docker registry 使用的是 https,我们设置 Harbor 默认 http 方式,所以当执行用 docker login、pull、push 等命令操作非 https 的 docker regsitry 的时就会报错。解决办法:

修改配置 /usr/lib/systemd/system/docker.service(通过systemctl status docker来查看该目录),将 ExecStart 增加 --insecure-registry=172.25.28.1。

harbor docker pull配置认证 docker harbor安装与配置_nginx_10

重启docker,再次在本地执行登录操作

[root@server1 harbor]# systemctl daemon-reload 
[root@server1 harbor]# systemctl restart docker
[root@server1 harbor]# docker login 172.25.83.1   #或docker login -u admin -p Harbor12345 172.25.83.1
Username: admin
Password: 
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 docker pull配置认证 docker harbor安装与配置_配置文件_11

8、上传镜像172.25.28.1/my_harbor/rhel7:nginx

[root@server1 harbor]# docker push 172.25.28.1/my_harbor/rhel7:nginx
The push refers to repository [172.25.83.1/my_harbor/rhel7]
9fd85e6ca660: Pushed   #显示Pushed表示上传成功
668afdbd4462: Pushed 
nginx4: digest: sha256:88e96d92b032b90a2549b961928f795e59e6e125ad38785957cc694aaba2cca5 size: 73

push镜像成功之后,然后在web界面上查看镜像是否存在,并且可以对镜像进行删除等操作

部署 SSL 认证(使用https的方式访问Web Ui)

1.修改 Harbor 的配置文件 hardor.cfg

[root@server1 harbor]# pwd
/root/harbor
[root@server1 harbor]# vim harbor.cfg

harbor docker pull配置认证 docker harbor安装与配置_nginx_12


2.创建根证书

<1> 创建证书存放目录

[root@server1 harbor]# mkdir /data/cert   #harbor.cfg文件中指定的目录
[root@server1 harbor]# cd /data/cert

<2>创建根证书私钥(不使用第三方权威机构的CA来认证,自己充当CA的角色)

[root@server1 cert]# openssl genrsa -out ca.key 2048   #生成根证书私钥(无加密),必须在cert目录中操作
Generating RSA private key, 2048 bit long modulus
.......................................+++
..............+++
e is 65537 (0x10001)
[root@server1 cert]# ls
ca.key

<3>生成自签名证书(使用已有私钥ca.key自行签发根证书)

[root@server1 cert]# openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj "/CN=Harbor-ca"   #必须在cert目录中操作
[root@server1 cert]# ls
ca.crt  ca.key

3.创建服务器端证书并签发服务器证书
<1>创建服务器端证书

[root@server1 cert]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr   #一路回车。必须在cert目录中操作
 
#注意如果是域名,比如chen.org,那么需要写入chen.org
Common Name (eg, your name or your server's hostname) []:chen.org

<2>签发服务器证书

[root@server1 cert]# echo subjectAltName = IP:172.25.28.1 > extfile.cnf  #必须在cert目录中操作。如果是域名,比如chen.org,那么这步是不需要的。
[root@server1 cert]# ls
ca.crt  ca.key  extfile.cnf  server.csr  server.key
[root@server1 cert]# openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt   #必须在cert目录中操作。如果是域名,比如chen.org,那么这步中把参数-extfile extfile.cnf去掉即可
Signature ok
subject=/C=XX/L=Default City/O=Default Company Ltd
Getting CA Private Key
[root@server1 cert]# ls
ca.crt  ca.key  ca.srl  extfile.cnf  server.crt  server.csr  server.key

4.设置 docker 证书
<1>创建目录

mkdir -p /etc/docker/certs.d/172.25.28.1

#如果是域名,比如chen.org,请创建下面的目录

# mkdir -p /etc/docker/certs.d/chen.org

# 如果端口为443,则不需要指定。如果为自定义端口,请指定端口

# /etc/docker/certs.d/yourdomain.com:port
[root@server1 cert]# mkdir -p /etc/docker/certs.d/172.25.28.1

<2>将 ca 根证书和服务器证书依次复制到上述创建的目录中

cp ca.crt /etc/docker/certs.d/172.25.83.1      #如果是域名,比如chen.org。cp ca.crt /etc/docker/certs.d/chen.org
cp server.crt /etc/docker/certs.d/172.25.83.1   #如果是域名,比如chen.org。cp server.crt /etc/docker/certs.d/chen.org

[root@server1 cert]# pwd
/data/cert
[root@server1 cert]# cp ca.crt /etc/docker/certs.d/172.25.83.1/
[root@server1 cert]# cp server.crt /etc/docker/certs.d/172.25.83.1/

5.重启 docker 和 启动 Harbor

[root@server1 cert]# systemctl restart docker
  [root@server1 cert]# cd /root/harbor/
  [root@server1 harbor]# ./install.sh

6.web界面查看

输入172.25.28.1 

harbor docker pull配置认证 docker harbor安装与配置_nginx_13

harbor docker pull配置认证 docker harbor安装与配置_nginx_14

变成https则配置成功