Project Harbor™是一个企业级的注册服务器,用于存储和分发Docker镜像。Harbor™通过添加企业通常需要的功能(如安全性,身份和管理)来扩展开源Docker分发版。作为企业私人注册表,Harbour™提供更好的性能和安全性。使注册表更接近构建和运行环境可提高图像传输效率。Harbor™支持多个注册表的设置并在它们之间复制图像。借助Harbour™,图像存储在私人注册表中,保留了公司防火墙后面的位和知识产权。此外,Harbour™还提供高级安全功能,例如用户管理,访问控制和活动审计。
系统要求:
在Linux主机上: docker 1.10.0+和docker-compose 1.6.0+。
虚拟机安装及配置
安装命令行自动补全
epel源
yum install epel-release -y
命令行自动补全
yum install bash-completion
设置主机名
#hostnamectl set-hostname k8s-harbor
配置IP地址
关闭防火墙服务及关闭防火墙开机自启动
[root@k8s-harbor ~]# systemctl stop firewalld
[root@k8s-harbor ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
关闭SELinux
修改/etc/selinux/config
# sed -i 's/enforcing$/disabled/g' /etc/selinux/config
# setenforce 0
时间同步自己配置好
# crontab -e
*/5 * * * * /usr/sbin/ntpdate 时间同步服务器;/usr/sbin/hwclock -w
官网安装文档
https://docs.docker.com/install/linux/docker-ce/centos/
要安装Docker CE,您需要维护的CentOS 7版本。不支持或测试归档版本。
该centos-extras
库必须启用。此存储库默认情况下处于启用状态,但如果您已禁用它,则需要 重新启用它。
overlay2
建议使用存储驱动程序。
首次在新主机上安装Docker CE之前,需要设置Docker存储库。之后,您可以从存储库安装和更新Docker。
设置存储库
yum-utils
提供了yum-config-manager
效用,并device-mapper-persistent-data
和lvm2
由需要 devicemapper
存储驱动程序。$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.显示有哪些稳定版本docker
$ yum list docker-ce --showduplicates | sort -r
4.安装哪个版本的docker
$ sudo yum install
##例子:
# yum install docker-ce-17.12.0.ce-1.el7.centos.x86_64
$ sudo yum install docker-ce
5.开机自启
$ sudo systemctl enable docker.service
6.启动docker
$ sudo systemctl start docker
Docker-compose的安装
Github地址为
https://github.com/docker/compose
安装文档
https://docs.docker.com/compose/install/
版本下载页面
https://github.com/docker/compose/releases
运行此命令下载最新版本的Docker Compose:
sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
对二进制文件应用可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
私有镜像仓库安装
Github地址为
https://github.com/vmware/harbor
安装文档
https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
镜像下载页面https://github.com/vmware/harbor/releases
分为在线安装和离线安装
选择离线安装
下载完成之后拷贝至/opt目录
$ tar xvf harbor-offline-installer-.tgz
创建300G存储镜像
# fdisk /dev/vdb
格式化分区并调整分区类型为 8e
# pvcreate /dev/vdb1
# lvcreate -l 100%VG -n mydata myvg
# mkfs.xfs /dev/mapper/myvg-mydata
修改/etc/fstab
配置参数位于文件harbor.cfg中。
harbor.cfg中有两类参数,必需参数和可选参数。
注意:如果您选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。特别是,您必须在注册或在Harbor中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除默认管理员用户外), auth_mode不能更改。
参数如下所述 - 请注意,至少您需要更改主机名属性。
所需参数:
192.168.1.10
或reg.yourdomain.com
。不要使用localhost
或127.0.0.1
为主机名 - 注册表服务需要由外部客户端访问!可选参数
重要提示:从现有Harbour实例升级时,必须确保在启动新版本的Harbour之前,auth_mode与之相同harbor.cfg
。否则,升级后用户可能无法登录。
ldaps://ldap.mydomain.com
)。 仅在auth_mode设置为ldap_auth时使用。uid=admin,ou=people,dc=mydomain,dc=com
)的用户的DN 。ou=people,dc=mydomain,dc=com
。 仅在auth_mode设置为ldap_auth时使用。(objectClass=person)
。
这里只更改了主机名一项,其他都是默认
运行
# ./install.sh
访问http://私有库ip 即可
用户名/密码是admin / Harbor12345
由于docker不信任http 私有库是http协议
如想用私有库需在/etc/docker/daemon.json文件中加入
{
"insecure-registries": ["私有库ip"]
}
systemctl daemon-reload
systemctl restart docker
重要:由于harbor 容器restart策略为always,但是harbor是启动7个容器,实测关机后重启,有个别容器起不来。本人觉得容器启动时相互之间有依赖,导致容器起不来。想出个笨办法,如有高人,请指教下。
写个脚本,扔到/etc/rc.d/rc.local中 让其开机启动
脚本存在/opt/harbor/harbor_start.sh,赋予执行权限
#!/bin/bash
cd /opt/harbor
while true
do
harbor_count=$(docker ps|grep vmware|grep -v grep|wc -l)
[[ ${harbor_count} -ne 7 ]] && /usr/local/bin/docker-compose down || exit 0
sleep 30
/usr/local/bin/docker-compose up -d
sleep 30
done
在/etc/rc.d/rc.loacl中添加一行,并赋予执行权限即可开机启动
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/opt/harbor/harbor_start.sh