Docker 镜像仓库 harbor
本地镜像上传到官方仓库
#将自制的镜像上传至 docker 仓库;https://hub.docker.com/
1,登录到 docker hub官网创建账户,创建一个shi仓库
2,docker login docker.io #登录
3,cat /root/.docker/config.json #查看认证消息
4,docker tag alpine shi/alpine #为镜像做标记
5,docker push shi/alpine #上传到官方镜像库
6,官网点击 Repositories 查看
Docker 仓库之单机 Docker Registry
官方文档地址:https://docs.docker.com/registry/
官方 github 地址:https://github.com/docker/distribution
Docker Registry 作为 Docker 的核心组件之一负责镜像内容的存储与分发,客户端的 docker pull 以及 push 命令都将直接与 registry 进行交互
#通过官方提供的docker registry镜像来简单搭建一套本地私有仓库环境
docker pull registry #下载registry镜像
mkdir -pv /opt/docker/auth #创建一个授权使用目录
cd /opt/docker/auth/
docker run --entrypoint htpasswd registry -Bbn yun 123456 > htpasswd #创建用户
#启动registry创建容器
docker run -d -p 5000:5000 --restart=always --name registry1 -v /opt/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
docker ps #验证容器开启端口
vim /etc/docker/daemon.json
{
"insecure-registries":["10.0.0.3:5000"]
}
{ "registry-mirrors": ["https://es5ynw9q.mirror.aliyuncs.com"]
}
systemctl restart docker
docker login 10.0.0.3:5000 #测试登录仓库,登录成功
docker tag centos:centos7 shi/centos7 #为镜像做标记
docker tag shi/centos7 10.0.0.3:5000/shi/centos7 #做网页标记
docker push 10.0.0.3:5000/shi/centos7 #上传镜像
docker login 10.0.0.3:5000 #登录仓库
docker pull 10.0.0.3:5000/shi/centos7 #从仓库下载镜像
docker run -it 10.0.0.3:5000/shi/centos7 bash #从下载的镜像启动容器
Docker 仓库之分布式 Harbor
harbor 官方网址:https://goharbor.io/
Harbor是一个用于存储和分发Docker镜像的企业级Registry 服务器,由vmware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution
Harbor 功能官方介绍
1,图像化管理界面
2,基于角色的访问控制
3,审计管理:所有针对镜像仓库的操作都可以被记录追溯
4,国际化:已拥有英文、中文、德文、日文和俄文的本地化版本
5,RESTful API - RESTful API:提供给管理员对于 Harbor 更多的操控
6,部署简单:提供在线和离线两种安装工具
7,镜像复制:镜像可以在多个 Registry 实例中同步
安装 Harbor
下载地址:https://github.com/vmware/harbor/releases
安装文档:https://github.com/vmware/harbor/blob/master/docs/installation_guide.md
#server1安装harbor
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-compose
tar xvf harbor-offline-installer-v1.10.1.tgz -C /opt/
cd /opt/harbor/
vim harbor.yml #注释https信息
hostname: 10.0.0.7
http:
port: 80
harbor_admin_password: 123456
./install.sh
ss -ntal #查看端口
docker-compose stop #停止harbor服务
docker-compose start #开启harbor服务
docker images #查看镜像
浏览器访问10.0.0.7 登录
admin 123456
创建管理项目 yun 为公开
#客户端配置 10.0.0.3 允许上传镜harbor
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://es5ynw9q.mirror.aliyuncs.com" ],
"insecure-registries":["10.0.0.7:80" ]
}
systemctl restart docker
docker pull nginx
docker login 10.0.0.7:80
#修改images 的名称,不修改成指定格式无法将镜像上传到harbor仓库
格式: HarborIP/项目名/image
docker tag nginx 10.0.0.7:80/yun/nginx
docker push 10.0.0.7:80/yun/nginx #上传镜像
#刷新10.0.0.7web界面,验证yun项目下nginx镜像信息
#从harbor服务器下载镜像
凡是需要从 harbor 镜像服务器下载或上传image 的 docker 服务都要更改
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://es5ynw9q.mirror.aliyuncs.com" ],
"insecure-registries":["10.0.0.7:80" ]
}
systemctl restart docker
docker pull 10.0.0.7:80/yun/nginx:latest #下载镜像
docker run -it -p 80:80 10.0.0.7:80/yun/nginx #启动容器
curl 10.0.0.3 #访问测试
harbor 高可用实现
Harbor 支持基于策略的 Docker 镜像复制功能,这类似于 MySQL 的主从同步,其可以实现不同的数据中心同步镜像,并提供管理界面,已经有很多互联网公司使用harbor搭建内网 docker 仓库的案例,并且实现了双向复制的案列
#新添加一个harbor服务器
yum install -y docker-ce python-pip docker-compose
systemctl enable --now docker
tar xvf harbor-offline-installer-v1.10.1.tgz -C /opt/
cd /opt/harbor/
vim harbor.yml #注释https信息
hostname: 10.0.0.17
http:
port: 80
harbor_admin_password: 123456
./install.sh
ss -ntal #查看端口
docker-compose stop #停止harbor服务
docker-compose start #开启harbor服务
浏览器访问10.0.0.17
1,登录 admin 123456
2,创建管理项目 yun 为公开
3,仓库管理:添加目标--提供者:harbor 目标名:yun 目标URL:10.0.0.7 访问ID与密码
4,测试连接成功后创建
5,复制管理:新建规则--名称:yun-backup 目的Registry:10.0.0.7 触发模式:事件驱动
6,在10.0.0.7 重复上面5布操作 #注意IP地址需要修改
7,docker tag centos 10.0.0.7:80/yun/centos
8,docker push 10.0.0.7:80/yun/centos #上传镜像到10.0.0.7
9,刷新10.0.0.17web界面,查看复制管理,镜像同步到了10.0.0.17
10,删除10.0.0.17的镜像,此时10.0.0.7的镜像也被删除
#修改docker配置文件下载10.0.0.17的镜像
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://es5ynw9q.mirror.aliyuncs.com" ],
"insecure-registries":["10.0.0.17:80" ]
}
systemctl restart docker
docker login 10.0.0.17:80
docker pull 10.0.0.17:80/yun/centos:latest #下载镜像
#添加HAproxy负载均衡配置
vim /etc/haproxy/haproxy.cfg
listen images-80
bind 10.0.0.100:80
balance source
mode http
server 10.0.0.7 10.0.0.7:80 check
server 10.0.0.17 10.0.0.17:80 chekc
vim /etc/docker/daemon.json #所有docker节点配置
{
"registry-mirrors": ["https://es5ynw9q.mirror.aliyuncs.com" ],
"insecure-registries":["10.0.0.100:80" ]
}