Docker本地私有仓库搭建
- 下载registry镜像源
docker pull registry
在下载速度慢、下载失败时可以配置国内镜像加速器 阿里云镜像加速器
按照对应官网教程进行操作
- 运行registry
docker run -d -p 5000:5000 --name registry registry
- -d: 后台运行容器,并返回容器ID;
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
后台运行registry镜像,将容器端口5000映射到宿主机上的5000端口
-
测试本地镜像仓库
vim /etc/hosts
设置仓库名称(匹配ip地址)192.168.137.96 repo.local
将以上配置加入文件当中
docker tag registry repo.local:5000/registry
上传镜像
docker push repo.local:5000/registry
-
设置镜像仓库开机自启动服务
设置Docker开启自启动(运行完以下指令可重启服务器测试)
systemctl enable docker
设置容器Docker启动时自启动(运行完后可重启docker服务测试)
docker update --restart=always registry
Harbor安装教程
Harbor安装前准备
- 下载Harbor
- 安装要求
硬件要求(harbor v2.11.0):
资源 | 最小 | 推荐 |
---|---|---|
CPU | 2 CPU | 4 CPU |
内存 | 4 GB | 8 GB |
磁盘 | 40 GB | 160 GB |
软件要求(harbor v2.11.0):
软件 | 版本 | 描述 |
---|---|---|
Docker | 20.10.10-ce+或以上 | 有关安装说明,请参阅 Docker Engine 文档 |
Docker Compose | docker-compose (v1.18.0+) 或 docker compose v2 (docker-compose-plugin) | 有关安装说明,请参阅 Docker Compose 文档 |
OpenSSL | 优先最先版本 | 用于生成 Harbor 的证书和密钥 |
配置Harbor Https 访问
生成证书颁发机构证书
-
生成CA证书密钥
openssl genrsa -out ca.key 4096
-
genrsa
: 指定生成一个 RSA 私钥。RSA 是一种非对称加密算法,广泛用于数据加密和数字签名。 -
out ca.key
: 指定输出文件名。生成的 RSA 私钥将被保存到 ca.key 文件中。 -
4096
: 指定 RSA 密钥的长度。这里选择了 4096 位,这是一个安全性较高的密钥长度。常见的 RSA 密钥长度有 2048 位和 4096 位,4096 位比 2048 位更安全,但也更慢。
-
-
生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA" \ -key ca.key \ -out ca.crt
-
-x509
: 生成一个自签名证书。 -
-new
: 生成新的证书请求以及私钥,默认为1024比特。 -
-nodes
: 表示不对私钥进行加密。 -
-sha512
: 使用 SHA-512 哈希算法对证书进行签名。 -
-days 3650
: 证书的有效期为 3650 天。 -
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA
。包括以下字段:- C=CN: 国家,CN 表示中国。
- ST=Beijing: 州或省,Beijing 表示北京市。
- L=Beijing: 地区或城市,Beijing 表示北京市。
- O=example: 组织名称,example 表示示例组织。
- OU=Personal: 组织单位,Personal 表示个人用途。
- CN=MyPersonal Root CA: 公共名称,MyPersonal Root CA 表示个人根证书。
- -key ca.key: 使用之前生成的 RSA 私钥 ca.key 文件。
-out ca.crt: 输出文件,生成的自签名证书将保存为 ca.crt 文件。
生成服务器证书
- 生成私钥
openssl genrsa -out repo.local.key 4096
- 生成证书签名请求 (CSR)
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=repo.local" \ -key repo.local.key \ -out repo.local.csr
- 生成 x509 v3 扩展文件
cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=repo.local DNS.2=localhost EOF
- 使用该文件为您的 Harbor 主机生成证书
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in repo.local.csr \ -out repo.local.cert
- 向Docker和Harbor提供证书 (Centos)
配置ca机构证书,服务器证书,服务器密钥
编辑docker配置文件mkdir /etc/docker cp repo.local.cert /etc/docker/repo.local/ cp repo.local.key /etc/docker/repo.local/ cp ca.crt /etc/docker/repo.local/
重启docker{ "tls": true, "tlsverify": true, "tlscacert": "/etc/docker/repo.local/ca.crt", "tlscert": "/etc/docker/repo.local/repo.local.cert", "tlskey": "/etc/docker/repo.local/repo.local.key" }
systemctl restart docker
Harbor下载安装
-
下载需要的Harbor版本
-
离线安装
tar -zxvf harbor-offline-installer-v2.11.0.tgz -C /usr/local
-
修改配置文件(将hostname修改为对应ip,此处的repo.local已经再/etc/hosts配置过)
-
安装
./install.sh
, 访问https://服务器ip查看。 此时如果已经安装过registry,将其删除即可
账号密码: admin/Harbor12345, 密码对应yaml文件中的harbor_admin_password
镜像上传测试
- 登录私有仓库(账号密码同上)
docker login repo.local
- 根据界面说明上传镜像测试即可
配置其他机器连接私有仓库
- 修改
/etc/hosts
文件(注意左侧为私有仓库地址,右侧为私有仓库地址映射)192.168.137.96 repo.local
- 复制CA证书、服务器密钥、服务器证书到 客户端服务器(slave1)
scp /etc/docker/repo.local/* slave1:/etc/docker/repo.local
- 创建并写入文件
/etc/docker/daemon.json
cat > /etc/docker/daemon.json <<- EOF { "registry-mirrors" : ["https://cpzzspgp.mirror.aliyuncs.com"], "insecure-registries": ["repo.local"], "tls": true, "tlsverify": true, "tlscacert": "/etc/docker/repo.local/ca.crt", "tlscert": "/etc/docker/repo.local/repo.local.cert", "tlskey": "/etc/docker/repo.local/repo.local.key" }