目录
harbor简介:
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。
一、构建企业级的私有仓库
删掉之前的镜像
docker ps
docker rm -f registry
docker ps -a
真机中:把docker-compose-linux-x86_64-v2.0.1和harbor-offline-installer-v2.3.4.tgz传给server1
ls
mv docker-compose-linux-x86_64-v2.0.1 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose #给执行权限
docker-compose #运行
tar zxf harbor-offline-installer-v2.3.4.tgz #解压
生成配置文件.tmpl是模板
cd harbor/
ls
cp harbor.yml.tmpl harbor.yml
ls
编辑配置文件
vim harbor.yml
5 hostname: reg.westos.org #域名要和刚才生成认证的域名保持一致
17 certificate: /data/certs/westos.org.crt #证书的位置
18 private_key: /data/certs/westos.org.key #key的位置
34 harbor_admin_password: westos
mkdir /data
cd
ls
mv certs/ /data/ #移动原来创建的证书
cd /data/
ls
cd certs/
ls
cd
cd harbor/
ls
mkdir /var/log/harbor/
ls
./install.sh #会自动生成docker-compose文件【此命令必须和docker-compose.yml保持在同一目录】
pwd
ls
docker-compose ps #执行的时候是从docker-compose.yml文件里加载信息的【有9个容器】
网页:访问172.25.70.1 #访问80时做了端口映射,【仓库监听的是本机的80,且访问80会自动重定向到443】
netstat -antlp
docker images #可以看到启动容器导入的镜像
docker-compose ps
ll docker-compose.yml
cd
docker-compose ps #没有在刚才的目录读取文件会报错
网页中library是默认项目,存在library项目里的镜像在拉取的时候直接指向镜像名
docker tag reg.westos.org/busybox:latest reg.westos.org/library/busybox:latest
docker logout reg.westos.org #退出刚才的登陆
cd .docker/
ls
cat config.json
docker login reg.westos.org #登陆,访问现在的仓库
ls
cat config.json #可以看到信息已经保存起来了,不用每次上传的时候登陆了
cd
上传镜像
docker push reg.westos.org/library/busybox:latest
网页中:刷新可以看到在library项目里可以看到刚刚上传的镜像
docker tag nginx:1.18 reg.westos.org/library/nginx:1.18
docker push reg.westos.org/library/nginx:1.18
网页中:刷新可以看到在library项目里可以看到刚刚上传的镜像
开启server2:server1中:
cd /etc/yum.repos.d/
ls
scp docker-ce.repo CentOS-Base.repo server2:/etc/yum.repos.d/
#软件仓库传输过去为了安装docker
cd /etc/sysctl.d/
ls
scp docker.conf server2:/etc/sysctl.d/
#传输文件,为修改内核选项
cd /etc/docker/
ls
scp -r certs.d/ server2:/etc/docker/
#server2需要证书
scp daemon.json server2:/etc/docker/
#server2需要知道仓库在什么地方
server2:
yum install -y docker-ce
sysctl --system #生效
systemctl start docker #启动
systemctl enable docker #设置开机自起
docker info
vim /etc/hosts
#给server1添加解析:reg.westos.org
cd /etc/docker/
ls
vim daemon.json
#修改为:https://reg.westos.org/ #指定私有仓库
systemctl daemon-reload
systemctl reload docker
docker info #查看是否生效
docker images
docker pull busybox #拉取是从私有仓库拉取的
docker pull nginx:1.18
docker images
网页中刷新点击日志,可以看到拉取的信息【拉取可以是匿名的,但上传不是匿名】
二、harbor的更多功能
1、安装添加内容签名和扫描和chart
cd /data/ #整个harbor的所有数据所在的位置
cd
cd harbor/
docker-compose ps #启动
docker-compose stop #停止【docker-compose是整体的停止】
ls
docker ps -a
docker ps
docker-compose down #删除现有的所有的容器
docker-compose ps -a
docker network ls #查看网络
docker volume ls #查看卷
cd
ls
cd harbor/
ls
./install.sh --with-notary --with-trivy --with-chartmuseum #在安装的时候添加内容签名和扫描和chart
docker-compose ps #可以看到开启了比较多的容器
网页中点击library--busybox 点击扫描
2、内容信任---镜像签名
cd
cd .docker/
pwd
部署根证书:
mkdir tls/reg.westos.org:4443 -p #建立目录
cd tls/
ls
cd reg.westos.org\:4443/
pwd
cp /etc/docker/certs.d/reg.westos.org/ca.crt .
ls
启动docker内容信任
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443
cd
docker push reg.westos.org/library/nginx:1.18 #在上传的时候一定要加标签,因为内容信任是通过标签判断的
#需要给两个密码,跟key传的是nginx镜像,标签改了没有关系,镜像本身不改没有关系。【镜像名不发生改变不用输入根key】
网页:进入library可以看到已经签名
server2:
docker images
docker rmi nginx:1.18
docker pull nginx:1.18 #拉取时速度很快【从仓库匿名拉取】
网页查看扫描是否完成
server1:
cd /data/
cd trivy-adapter/
ls
cd trivy/
cd db/
ls
pwd
du -h trivy.db #扫描完后查看大小
ll
cd ..
ll
网页点击nginx进行扫描