准备环境
软件版本信息
操作系统:
操作系统版本不一定要最新的,但是操作系统Linux内核版本必须在3.10以上。
安装fedora的时候需要选择“容器管理”才会安装docker相关服务及命令。
安装完成之后需要使用如下命令启动docker服务:
然后可以使用 docker version 命令查看docker的版本信息,Fedora默认安装的是1.13版本。
安装系统的时候,docker-compose是默认没有的,需要单独安装,安装方法参考下一小节。尽量安装最新发布的版本。
docker-compose:
harbor : v1.4.0
安装docker-compose
docker为Fedora Server自带,无需安装,没有docker-compose,需要安装。docker-compose的github地址为:https://github.com/docker/compose
点击到“release”标签页查看发布的版本,直接使用github上的命令进行安装:
关闭防火墙与SELinux【非常重要】
下载并安装harbor
下载harbor离线安装包
配置harbor.cfg
由于启用了https,因此配置了https的证书,主要修改了如下配置:
需要修改的内容如下:
1. hostname:填写域名信息,慎重填写,以后将要使用的进项将以此为前缀,比如域名是wangxianfeng.cn,以后的镜像名称就是类似如下:wangxianfeng.cn/test/webserver:1.0
2. customize_crt = off 不知道干嘛的,关了就得了
3. ssl_cert和ssl_cert_key这2个配置的是生成的ssl相关的内容,根据后缀名配置即可。
4. secretkey_path【非常重要】此路径需要和下面docker-compose.yml文件中的相关配置保持一致,比如此处配置的是:/home/wangxianfeng/harbor/data,然后会在此目录下生成1个secretkey的文件,保存着adminserver和ui要使用的key,具体做什么的我也不知道。
5. harbor_admin_password登录web页面的时候admin用户的密码
6. db_password数据库的密码,为了安全起见,还是要改下。
修改docker-compose.yml配置
harbor使用docker-compose进行组合在一起的,相关的配置全部在此进行配置。现在把文件全部内容贴在这里,需要修改的内容我注释一下。
生成https CA证书
1.制作CA证书:
ca.key CA私钥:
制作解密后的CA私钥(一般无此必要):
ca.crt CA根证书(公钥):
2.制作生成网站的证书并用CA签名认证
在这里,假设网站域名为harbor.wangxianfeng.cn
生成harbor.wangxianfeng.cn证书私钥:
制作解密后的harbor.wangxianfeng.cn证书私钥:
生成签名请求:
在common name中填入网站域名,如harbor.wangxianfeng.cn即可生成改站点的证书,同时也可以使用泛域名如*.wangxianfeng.cn来生成所有二级域名可用的网站证书。
用CA进行签名:
其中,policy参数允许签名的CA和网站证书可以有不同的国家、地名等信息,days参数则是签名时限。
如果在执行签名命令时,出现“I am unable to access the ../../CA/newcerts directory”
修改/etc/pki/tls/openssl.cnf中“dir = ./CA”
然后:
再重新执行签名命令。
最后,把ca.crt的内容粘贴到harbor.wangxianfeng.cn.crt后面。这个比较重要!因为不这样做,可能会有某些浏览器不支持。
好了,现在https需要到的网站私钥harbor.wangxianfeng.cn.key和网站证书harbor.wangxianfeng.cn.crt都准备完毕。
执行install.sh进行安装
如果一切配置好,在当前目录下执行如下命令,即可正常启动harbor
此命令会准备好所有的镜像,然后启动harbor相关的所有容器,启动之后的容器有如下几个:
此时便可以通过https://domainname或者https://ip的方式进行访问。
使用harbor
新建项目&管理项目
点击左侧的“项目”菜单,点击“新建项目”按钮,输入项目名称,设置访问级别,公开表示不用认证也可以读取项目里的镜像,非公开表示只有项目的成员才能读取该项目里的镜像。为了安全起见,还是设置为非公开。这里创建了一个xf的项目:
刚刚新建完成的项目没有任何镜像,因此镜像仓库显示为空。创建项目使用的是admin用户,但是下载镜像不应该使用admin用户,因此可以新建一个开发人员的用户,把新建用户加入到项目成员当中去。
添加到项目成员当中,角色为开发人员:
这样就可以用新建的用户进行镜像的push和pull操作了。
镜像的push与pull操作
创建镜像仓库就是为了存储镜像的,因此下面的步骤就去存储和下载镜像,首先下载一个测试的镜像nginx
然后标记新的镜像(版本设置为1.0):
然后使用docker iamges命令查看新的镜像是否已经生成
这时先不要着急push,因为还有一个重要的步骤需要完成
此时打开网页访问harbor.wangxianfeng.cn时就会提示ssl不安全的连接,说明ssl添加成功;但是在命令行登陆docker仓库时不成功的。[用Ip登陆则成功]
错误信息类似如下:
解决方法:停止服务:
创建对应目录:
启动服务:
再次登陆,成功了:
然后就可以push镜像到仓库了:
可以在harbor前台查看刚刚push的镜像:
测试一下新上传的镜像
首先删除当前机器上所有nginx镜像
从新的仓库pull镜像下来:
然后运行一个容器:
把nginx的80端口映射到本地的8098端口,然后直接访问此机器的8098端口,看看是否能够访问:
完美!
再测试一下非项目成员能够读取镜像
新建用户xianfeng,不加入到xf项目成员当中
然后命令行操作如下:
Perfect!The end!