文章目录

  • 一、背景
  • 二、安装Docker
  • 1、基础环境
  • 2、相关目录创建
  • 3、获取安装包解压安装
  • 4、创建配置文件
  • 5、创建service文件
  • 6、启动Docker
  • 三、安装docker-dompose
  • 1、获取安装包
  • 2、安装
  • 四、安装Harbor
  • 1、获取安装包
  • 2、解压安装
  • 3、配置文件
  • 4、生成证书
  • 5、脚本一键安装
  • 6、访问
  • 7、创建仓库
  • 8、使用


一、背景

Docker中要使用镜像,我们一般都会从本地、Docker Hub公共仓库或者其它第三方的公共仓库中下载镜像,但是出于安全和一些内外网的原因考虑,企业级上不会轻易使用。普通的Docker Registry又不满足需求,所以一般可以利用Harbor搭建一个企业级的私有镜像仓库。

Harbor是构建企业级私有docker镜像仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库(helm就相当于k8s的yum)。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,而Clair则是容器安全扫描工具,它通过各大厂商提供的CVE漏洞库来获取最新漏洞信息,并扫描用户上传的容器是否存在已知的漏洞信息,这两个安全功能对于企业级私有仓库来说是非常具有意义的。

二、安装Docker

1、基础环境

  • 系统最大文件数修改
echo "*   soft    nofile  65535" >> /etc/security/limits.conf
echo "*   hard    nofile  65535" >> /etc/security/limits.conf
  • 防火墙
systemctl stop firewalld && systemctl disable firewalld

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0

2、相关目录创建

这里以安装在/usr/local/docker目录为例

sudo mkdir -p /usr/local/docker && sudo mkdir -p /etc/docker

3、获取安装包解压安装

https://download.docker.com/linux/static/stable/x86_64/

以19.03.5版本为例

tar -xvf docker-19.03.5.tgz

cp docker/* /usr/bin/

4、创建配置文件

cat > /etc/docker/daemon.json <<EOF
{
    "insecure-registries": [],
    "max-concurrent-downloads": 20,
    "live-restore": true,
    "max-concurrent-uploads": 10,
    "debug": false,
    "data-root": "/usr/local/docker",
    "log-opts": {
      "max-size": "100m",
      "max-file": "5"
    }
}
EOF

5、创建service文件

cat > /etc/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target
EOF

6、启动Docker

chmod +x /etc/systemd/system/docker.service

systemctl daemon-reload

systemctl enable docker.service && systemctl start docker

harbor 仓库管理 harbor仓库搭建_harbor

三、安装docker-dompose

1、获取安装包

https://github.com/docker/compose/releases

harbor 仓库管理 harbor仓库搭建_仓库_02

2、安装

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

chmod +x /usr/bin/docker-compose

harbor 仓库管理 harbor仓库搭建_仓库_03

四、安装Harbor

1、获取安装包

https://github.com/goharbor/harbor/releases

  • 以1.10.2版本为例

harbor 仓库管理 harbor仓库搭建_harbor 仓库管理_04

2、解压安装

tar -xvf harbor-offline-installer-v1.10.2.tgz -C /usr/local/

3、配置文件

vim /usr/local/harbor/harbor.yml
# 本机外网IP或域名,该地址供用户通过UI进行访问,不要使用127.0.0.1
hostname: 10.10.0.1

# 指定证书及密钥文件,后面会使用openssl生成
certificate: /data/cert/harbor.crt
private_key: /data/cert/harbor.key

# Harbor的管理员密码,后面可以在页面上修改
harbor_admin_password: Harbor12345

# 指定mysql数据库管理员密码
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: Gsld1234!
  
# 数据存储目录,需要手动创建
data_volume: /data

4、生成证书

  • 创建数据及证书目录
mkdir -p /data/cert && cd /data/cert
  • 生成根证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=Shanghai/O=harbor/CN=harbor-registry"

harbor 仓库管理 harbor仓库搭建_registry_05

  • 生成一个证书签名,设置域名访问,这里我们用IP 10.10.0.1
openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -out server.csr -subj "/C=CN/L=Shanghai/O=harbor/CN=10.10.0.1"

harbor 仓库管理 harbor仓库搭建_仓库_06

  • 生成主机证书
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.crt

harbor 仓库管理 harbor仓库搭建_harbor_07

5、脚本一键安装

cd /usr/local/harbor/

./install.sh

6、访问

通过绑定的域名即可访问harbor页面,这里我们是IP:10.10.0.1,默认的用户名密码为admin/Harbor12345

harbor 仓库管理 harbor仓库搭建_docker_08


harbor 仓库管理 harbor仓库搭建_harbor 仓库管理_09

7、创建仓库

默认的Harbor带一个library的仓库,这里我们不是用这个,新建一个新的仓库“darren”,如果不想在使用仓库的时候还要docker login的话,可以直接创建一个公开仓库

harbor 仓库管理 harbor仓库搭建_docker_10

harbor 仓库管理 harbor仓库搭建_registry_11

8、使用

镜像仓库地址10.10.0.1,修改需要推送到仓库的镜像的tag,格式如下:

10.10.0.1:5000/darren/registry:2.7.1

推送镜像,需要先登录仓库,用户名密码为Harbor的用户名密码

docker login 10.10.0.1

docker push 10.10.0.1/darren/registry:2.7.1

harbor 仓库管理 harbor仓库搭建_docker_12

拉取镜像,因为是公开仓库,所以不需要login即可拉取

docker pull 10.10.0.1/darren/registry:2.7.1

harbor 仓库管理 harbor仓库搭建_仓库_13