1 Harbor仓库的部署
实验环境:
server1:172.25.12.1 docker-ce
server2:172.25.12.2 docker-ce
server1和server2的dns解析文件:172.25.12.1 server1 red.westos
防火墙和selinux关闭
(1)下载harbor的离线安装包并解压:tar zxf harbor-offline-installer-v1.10.1.tgz
(2)下载docker-compose二进制文件,并将其移动到 /usr/local/bin
,并给其可执行权限
mv docker-compose-Linux-x86_64-1.27.0 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Docker Compose
是 docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用 compose,可以通过 YAML 文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。
- 查看
docker-compose
的使用参数
- 将/root/certs/目录中的认证文件复制到/certs目录
(3)编辑harbor目录 harbor.yml文件:vim /root/harbor/harbor.yml
hostname:red.westos.org ##目标主机的主机名,用于访问Portal和注册表服务。
certificate: /certs/westos.org.crt ##认证文件的位置
private_key: /certs/westos.org.key ##认证文件的位置
harbor_admin_password: westos ##管理员的初始密码
(4) 安装:./install.sh
2 harbor仓库登陆和使用
(1)在浏览器页面登陆harbor仓库
- 输入账户密码登陆
(2)在server1的docker主机登陆harbor仓库:docker login red.westos.org
,登陆harbor页面的账号密码
- 给镜像打标签:
docker tag busybox:latest red.westos.org/library/busybox:latest
-
上传镜像:
docker push red.westos.org/library/busybox:latest
red.westos.org:仓库地址 library:仓库名称 busybox:latest:镜像
- 在浏览器端查看镜像文件是否上传成功
- 下载镜像:
docker pull red.westos.org/library/busybox:latest
- 设置优先去私有仓库下载镜像,如果没有去harbor仓库下载:v
im /etc/docker/daemon.json
{
"registry-mirrors" : ["https://red.westos.org"]
}
- 重启docker服务,使更改生效:
systemctl reload docker.service
- 下载镜像:
docker pull busybox
,下载的速度会加快
- 在浏览器页面查看仓库的日志
3 私有仓库的使用
(1)创建私有仓库linux
(2) 创建用户linux和westos
(3) 将linux用户添加为linux仓库的维护人员,westos用户添加为仓库的访客
(4)以linux(维护人员)的身份完成仓库的登陆认证
docker logout red.westos.org
docker login red.westos.org
- 向私有仓库inux上传镜像:
docker push red.westos.org/linux/webserver
(5)以westos(访客)的身份完成登陆认证
docker logout red.westos.org
docker login red.westos.org
- 向私有仓库linux中上传镜像:
docker push red.westos.org/linux/test
,访客没有该仓库上传的权限
- 访客的身份可以下载私有仓库的镜像:
docker pull red.westos.org/linux/nginx
- 查看linux的日志发现,westos用户下载了该仓库的镜像
4 重新安装harbor
- 停止容器并移除所有在compose文件中定义的容器、网络、镜像和数据卷:
docker-compose down
- 清除安装过程中所有的配置信息:
./prepare
- 查看安装的帮助:
./install.sh --help
./install.sh --with-notary --with-clair --with-chartmuseum
## --with-notary 启用harbor.yml中的https配置,加载证书。
## --with-clair 启动helm的clair格式
## --with-chartmuseum 启动镜像漏洞扫描
- 安装完成后,重新登陆harbor,可以发现多了 Helm Charts
- 前面上传到linux仓库的镜像并没有证书和漏洞扫描
- 查看linux仓库的配置管理
- 手动完成漏洞扫描
- 下载仓库:
docker pull red.westos.org/linux/nginx
5 镜像签名
(1)在浏览器页面的配置管理中设置linux仓库的内容信任和自动扫描镜像
- 删除已经下载的red.westos.org/linux/nginx镜像:
docker rmi red.westos.org/linux/nginx
- 重新下载linux仓库中的镜像:
docker pull red.westos.org/linux/nginx
,下载出现错误,原因是linux仓库中的nginx镜像没有签名
(2)镜像签名的方法
- 部署根证书
mkdir ~/.docker/tls/red.westos.org:4443/ -p
cd ~/.docker/tls/red.westos.org:4443/
cp /certs/westos.org.crt ca.crt
- 启用docker内容信任
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://red.westos.org:4443
测试:
- 上传镜像:
docker push red.westos.org/linux/busybox
,根据提示输入设置密码
- 镜像上传成功后自动完成漏洞扫描和签名
- 上再次传镜像:
docker push red.westos.org/linux/busybox:v1
,输入正确的
- 收回仓库的认证:
docker trust revoke red.westos.org/linux/busybox
- 取消仓库认证:
export DOCKER_CONTENT_TRUST=0
6 其他虚拟机使用harbor仓库
scp -r certs.d server2:/etc/docker/
server2:vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg.westos.org"],
}
server2: /etc/hosts
172.25.12.1 server10 reg.westos.org