网址:https://hub.docker.com
每个注册用户都可以上传和管理自己的镜像
上传镜像前需要登陆,登陆后生成~/.docker/config.json文件保存验证信息
docker login
上传本地镜像前必须先给上传的镜像用docker tag命令打标签
标签格式: docker.io/用户账号/镜像名:TAG
docker tag alpine:3.11 docker.io/sdada/alpine:3.11-v1
docker push docker.io...
注:若tag省略,将上传指定REPOSITORY的所有版本
docker pull ....
组织类似名称空间,每个组织的名称全网站唯一,一个组织可以有多个用户账户使用,并可以指定不同用户对组织仓库不同的权限
三种不同权限:
Read-only
Read&Write
Admin
在官方网页进行即可
docker pull
网址:https://github.com/docker/distribution
mkdir -p /etc/docker/auth
apt -y install apache2-utiles
htpasswd -Bbn sada 123456 > /etc/docker/auth/registy
docker run -d -p 5000:5000 --restart=always --name registry
-v /etc/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e
"REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e
REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry registry:2.7.1
注:直接登陆会报错,docker login默认使用https登陆,而docker registry为http,所以默认登陆失败
将registry仓库服务器地址加入service单元文件
修改配置让docker login支持http协议
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--insecure-registry 10.0.0.100:5000
或修改下面文件
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.100:5000"]
}
重启配置文件
systemctl daemon-reload
systemctl restart docker
注:docker.io改为IP:port
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。Harbor支持安装在多个Registry节点的镜像资源复制
harbor是由很多容器组成实现完整功能
Proxy:对应的启动组件nginx。一个nginx反向代理,代理Notary client、Docker client和浏览器的访问请求给后端的各服务
UI:对应启动组件harbor-ui。底层数据存储使用mysql数据库,主要提供了四个子功能:UI(web管理页面)、API(Harbor暴露的API服务)、Auth(用户认证服务)、Token服务
Registry:对应启动组件registry
Admin Server:对应启动组件harbor-adminserver。是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候需要加载adminserver的配置
Job Service:对应启动组件harbor-jobservice。负责镜像复制工作的
Log Collector:对应启动组件harbor-log。日志汇总组件,通过docker的log-driver把日志汇总
DB:对应启动组件harbor-db,负责存储metadata数据
docker compose必须先于harbor安装
https://mp.csdn.net/mp_blog/creation/editor/135069654
方法1:下载离线完整安装包
wget https://storage.googleapis.com/harbor-releases/release-
1.7.0/harbor-offline-installer-v1.7.6.tgz
方法2:下载在线安装包,比较慢
wget https://storage.googleapis.com/harbor-releases/release-
1.7.0/harbor-online-installer-v1.7.6.tgz
vim /apps/harbor/harbor.cfg
hostname= 修改此行,指向当前主机IP或FQDN
harbor_admin_password= 修改此行指定harbor登录用户admin的密码
方法1:通过service文件实现
方法2:通过rc.local实现
cat /etc/rc.local
#! /bin/bash
cd /apps/harbor
/usr/bin/docker-compose up
harbor上必须先建立项目,才能上传镜像
方法1:修改service文件
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
--insecure-registry 10.0.0.101 --insecure-registry 10.0.0.102
方法2:修改daemon.json
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://si7y70hh.mirror.aliyuncs.com"],
"insecure-registries": ["10.0.0.101:80","10.0.0.102:80"]
}
格式:Harbor主机IP/项目名/image名:版本
注:下载镜像前必须修改docker的service文件,加入harbor服务器的地址才可以下载
与命令行登陆harbor修改service文件或daemon.json相同
修改harbor.cfg文件
Harbor支持基于策略的Docker镜像复制功能,这类似于MySQL的主从同步
方法1:基于共享存储
方法2:基于镜像复制
harbor默认使用http,为了安全,可以使用https
touch /root/.rnd
mkdir /apps/harbor/certs/
cd /apps/harbor/certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout
ca.key -x509 -subj "...." -days 365 -out ca.crt
openssl req -newkey rsa:4096 -nodes -sha256 -subj
"....." -keyout harbor.org.key -out harbor.org.csr
openssl x509 -req -in harbor.org.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.org.crt
vim /apps/harbor/harbor.cfg
hostname = harbor.org
ui_url_protocol = https
ssl_cert = /apps/harbor/certs/harbor.org.crt
ssl_cert_key = /apps/harbor/certs/harbor.org.key
harbor_admin_password = 123456
直接登陆上传下载镜像会报错
mkdir -pv /etc/docker/certs.d/harbor.org/
scp -r harbor.org:/apps/harbor/certs/ca.crt /etc/docker/certs.d/harbor.org/