云原生必备工具!手把手教你搭建Harbor私有仓库(下)

发布时间:2023年12月28日

上文《云原生必备工具!手把手教你搭建Harbor私有仓库(上)》 中搭建的Harbor为了能够快速在本地搭建起来,因此去掉了443端口。

本文中将继续介绍,如何开启ssl验证以及从其他节点拉取私有镜像仓库中的镜像。

Harbor 开启ssl

生成ca证书

mkdir -p /data/cert

cd /data/cert/

openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/L=zhejiang/O=lisea/CN=harbor-registry"

openssl req -newkey rsa:4096 -nodes -sha256 -keyout (IP/域名).key -out server.csr -subj "/C=CN/L=zhejiang/O=lisea/CN=(IP/域名)"

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out (IP/域名).crt

将生成后的ca证书路径复制下来,修改harbor.yml中hostname以及ca证书地址,如下所示:

此处,为了公网访问,我使用的是阿里云主机进行搭建。

重新执行./install.sh。

此时访问harbor,可以看到页面变成了https,但是显示不安全,这个可以不需要去理会。


本地再次登陆

docker login 47.xx.xx.171 -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

此时,我们需要对镜像重新进行打tag操作。

docker tag be9874d47f6e 47.xx.xx.71/library/goweb

打包成功后,docker push

docker push 47.xx.xx.171/library/goweb

Using default tag: latest
The push refers to repository [47.xx.xx.171/library/goweb]
5f70bf18a086: Layer already exists 
6307f987eaa7: Layer already exists 
e6a710dfabc3: Layer already exists 
5af4f8f59b76: Layer already exists 
latest: digest: sha256:7988303fbdc6274cb19f9b1a29277870c6c85c7e1a9770bfae8cef8fb746fa4a size: 1152

其他节点拉取镜像

此时,切换到自己的电脑

docker pull localhost/library/goweb@sha256:7988303fbdc6274cb19f9b1a29277870c6c85c7e1a9770bfae8cef8fb746fa4a
-----
Error response from daemon: Get "http://localhost/v2/": dial tcp [::1]:80: connect: connection refused

出现报错,可能原因是因为本地电脑没有进行登陆

docker login 47.xx.xx.171 -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

再次执行拉取操作

其他问题

问题: docker: Error response from daemon: Get “https://xx.xx.xx.xx/qabc/test-2048/v2/”: http: server gave HTTP response to HTTPS client.
See ‘docker run --help’.

解决: 可以在docker engine 中加入"insecure-registries": ["47.xx.xx.171"]

拉取后执行docker run -d -p 8081:8081 be1c2814bb33即可启动

curl http://localhost:8081/hello
{"message":"hello"}
文章来源:https://blog.csdn.net/efheoihfe/article/details/135267604
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。