搭建docker镜像仓库

Docker Registry

Docker Registry

docker run -itd -v /root/data/registry:/var/lib/registry -p 5000:5000 --restart=always --name docker-registry registry:latest 

对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存
在请新建该文件)

{
    "registry-mirror": [
        "https://registry.docker-cn.com"
    ],
    "insecure-registries": [
        "192.168.199.100:5000"
    ]
}

当前镜像tag

[root@JD ~]# docker tag mysql:5.7 127.0.0.1:5000/registry-mysql:5.7

推送到镜像仓库

[root@JD ~]# docker push 127.0.0.1:5000/registry-mysql

用 curl 查看仓库中的镜像。

[root@JD ~]# curl 127.0.0.1:5000/v2/_catalog
{"repositories":["registry-mysql"]}

Docker 默认不允许非HTTPS方式推送镜像

使用 Docker Compose 搭建一个拥有权限认证、TLS 的私有仓库

harbor

使用脚本搭建

将harbor.sh脚本从 GitHub Gist下载到您的Ubuntu机器或VM。

harbor.sh脚本需要梯子才能下载。我在CSDN上传了一份harbor:v1.10版本的脚本。
使用安装脚本快速部署Harbor的脚本文件-harbor.sh

向当前用户授予运行权限。

chmod u+x

要注意修改脚本中的端口号。

Harbor要求在目标主机上打开以下端口。

港口协议描述
443HTTPSHarbor门户和核心API在此端口上接受HTTPS请求。您可以在配置文件中更改此端口。
4443HTTPS与Harbor的Docker内容信任服务的连接。仅在启用公证人的情况下才需要。您可以在配置文件中更改此端口。
80HTTPHarbor门户和核心API在此端口上接受HTTP请求。您可以在配置文件中更改此端口。

以超级用户身份运行脚本。

sudo ./harbor.sh

选择是使用主机的IP地址还是FQDN部署Harbor。

Would you like to install Harbor based on IP or FQDN?

这是您访问Harbor接口和注册表服务的地址。

要使用IP地址,请输入1。
要使用FQDN,请输入2。

该脚本需要几分钟才能运行。在运行时,该脚本会从Ubuntu下载所需的软件包和依赖项,安装最新的稳定版本的Docker和Docker Compose,并安装最新的稳定版本的Harbor。

当脚本报告时Harbor Installation Complete,登录到新的Harbor实例。

docker login <harbor_ip_or_FQDN>
用户名: admin
密码: VMware12345

在浏览器中输入Harbor地址,以登录Harbor接口

使用harbor.yml搭建

harbor 下载

解压之后修改harbor.yml

配置YML文件

hostname   这里设置本机的ip
harbor_admin_password    web页面的密码,默认的用户名和密码为admin和Harbor12345

如果没有https,则需要先注释:

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /your/certificate/path
  private_key: /your/private/key/path

运行

sh ./install.sh

Creating harbor-log ... done
Creating registry      ... done
Creating harbor-db     ... done
Creating harbor-portal ... done
Creating redis         ... done
Creating registryctl   ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----

访问页面

https://114.67.79.102:8088

docker-harbor效果图

建立https访问

生成证书颁发机构证书
生成CA证书私钥。
openssl genrsa -out ca.key 4096
生成CA证书。

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性。

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
 -key ca.key \
 -out ca.crt
生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crt和yourdomain.com.key。

生成私钥。
openssl genrsa -out yourdomain.com.key 4096
生成证书签名请求(CSR)。

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为公用名(CN)属性,并在密钥和CSR文件名中使用它。

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr
生成一个x509 v3扩展文件。

无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS条目以反映您的域。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF
使用该v3.ext文件为您的Harbor主机生成证书。

将yourdomain.comCRS和CRT文件名中的替换为Harbor主机名。

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt
提供证书给Harbor和Docker

生成后ca.crt,yourdomain.com.crt和yourdomain.com.key文件,必须将它们提供给港口和码头工人,和重新配置港使用它们。

将服务器证书和密钥复制到Harbor主机上的certficates文件夹中。

cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/

转换yourdomain.com.crt为yourdomain.com.cert,供Docker使用。

Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert

将服务器证书,密钥和CA文件复制到Harbor主机上的Docker certificate文件夹中。必须首先创建适当的文件夹。

cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/

如果将默认nginx端口443 映射到其他端口,请创建文件夹/etc/docker/certs.d/yourdomain.com:port或/etc/docker/certs.d/harbor_IP:port。

重新启动Docker Engine

systemctl restart docker
添加hosts解析
echo "10.19.46.15   yourdomain.com" >> /etc/hosts   
运行prepare脚本以启用HTTPS
./prepare
停止harbor
docker-compose down -v    
开启harbor
docker-compose up -d
本机登录
[root@JD harbor]# docker login 127.0.0.1:443
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded   

参考资料

部署单机版harbor

通过Helm部署具有高可用性的harbor

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值