Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)
来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
它提供了管理图形界面,基于角色的访问控制(Role Based Access Control),镜像远程复制(同步),AD/LDAP集成、
以及审计日志等企业用户需求的功能,同时还原生支持中文。
基于策略的Docker镜像复制功能,可在不同的数据中心、不同的运行环境之间同步镜像,
并提供友好的管理界面,大大简化了实际运维中的镜像管理工作
Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库
安装之前:
1.安装docker-compose、docker以及python2.7以上还有openssl
rhel7.6操作系统自带了python和openssl
2.首先在https://hub.docker.com/网站注册一个账号
在docker hub上新建一个公共仓库
[root@server1 ~]# systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.1.tgz
[root@server1 ~]# ls
anaconda-ks.cfg harbor harbor-offline-installer-v1.10.1.tgz
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common.sh harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
vim harbor.yml
5 hostname: reg.westos.org
15 port: 443
17 certificate: /your/certificate/path
18 private_key: /your/private/key/path
[root@server1 ~]# cat /etc/hosts 添加解析
172.25.254.5 server1 reg.westos.org
[root@server1 certs]# ls
westos.org.crt westos.org.key
[root@server1 harbor]# ls
common common.sh docker-compose.yml harbor.v1.10.1.tar.gz harbor.yml install.sh LICENSE prepare
[root@server1 harbor]# ./prepare 清除原先配置
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Clearing the configuration file: /config/nginx/nginx.conf
Clearing the configuration file: /config/core/env
Clearing the configuration file: /config/core/app.conf
Clearing the configuration file: /config/registry/config.yml
Clearing the configuration file: /config/registry/root.crt
................
[root@server1 harbor]# ./install.sh 再次启动
[root@server2harbor]# netstat -tnpl 443端口已经打开
添加解析
vim /etc/hosts
172.25.254.1 server1 reg.westos.org
上传证书到新建的目录,并且重名为ca.crt此路径为默认设置,不需要重启docker服务
mkdir -p /etc/docker/certs.d/reg.westos.org 创建目录注意域名
scp westos.org.crt server6:/etc/docker/certs.d/reg.westos.org/ca.crt
从docker hub上下载镜像的速度太慢,需要配置镜像加速器,这里以阿里云为例:(需要提前注册阿里云帐号)
配置docker daemon文件
systemctl restart docker 重启服务
[root@server5 docker]# docker rmi nginx 删除镜像
Untagged: nginx:latest
[root@server5 docker]# docker rmi reg.westos.org/library/nginx:latest
[root@server5 docker]# docker images 查看
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@server5 ~]# docker pull nginx 设置完镜像加速器直接拉取镜像不需要指定一长串路径
上传镜像需要认证:server1创建证书存放目录
[root@server1 reg.westos.org]# docker login reg.westos.org 认证登录
[root@server1 ~]# docker load -i game2048.tar 导入镜像
Loaded image: game2048:latest
[root@server1 ~]# docker push reg.westos.org/library/game2048 上传镜像指明仓库路径
index服务主要提供镜像索引以及用户认证的功能。
当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,
在下载过程中
registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。
Docker Registry有三个角色,分别是index、registry和registry client。
index: 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
registry: 是镜像和图表的仓库,它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
Registry Client: Docker充当registry客户端来维护推送和拉取,以及客户端的授权。
Harbor与Clair集成,添加漏洞扫描功能。Clair是coreos开源的容器漏洞扫描工具,在容器逐渐普及的今天,容器镜像安全问题日益严重。Clair是目前少数的开源安全扫描。
默认在运行harbor时漏洞扫描和信任认证功能是没有开启的,需要重新开启并添加参数
[root@server1 ~]# mkdir -p /etc/docker/certs.d/reg.westos.org/ 创建认证目录
[root@server1 ~]# scp /data/certs/westos.org.crt /etc/docker/certs.d/reg.westos.org/ca.crt 获取再认证文件
Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
[root@server1 ~]# docker pull reg.westos.org/library/nginx 不用认证登录 是公开的
Using default tag: latest
Error response from daemon: unknown: The image is not signed in Notary.
图像没有在公证中签名
镜像签名:
https://goharbor.io/docs/1.10/working-with-projects/workingwith-images/pulling-pushing-images/
启用docker内容信任
[root@server1 reg.westos.org:4443]# export DOCKER_CONTENT_TRUST=1
[root@server1 reg.westos.org:4443]# export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443
docker trust inspect reg.westos.org/westos/myapp:v1 查看签名信息
docker trust revoke reg.westos.org/westos/myapp:v1 删除签名信息