当前位置:首页 » 《资源分享》 » 正文

Docker 镜像仓库

16 人参与  2024年10月10日 17:20  分类 : 《资源分享》  评论

点击全文阅读


目录

1、搭建私有 registry

服务端创建镜像仓库

客户端推送镜像

镜像导入导出

2、Nginx 代理 registry 仓库

SSL 证书 & https 协议

SSL证书

https协议

SSL 的验证流程

客户端安装 Nginx

使用 openssl 生成CA根证书和根证书key

创建 Nginx 服务证书

配置启动 Nginx

服务端配置 docker

上传镜像

registry 仓库镜像删除

3、Harbor 仓库搭建

Docker-compose

创建 Harbor 服务证书

部署 Harbor

配置 Nginx 代理 Harbor

上传镜像


1、搭建私有 registry

主机名

ip

安装服务

角色

node-10

192.168.137.110

docker

Registry客户端

node-11

192.168.137.111

docker,Registry

Registry服务器

服务端创建镜像仓库
# 服务端拉取Registry镜像[root@node-11 ~] docker pull registrymkdir -p /data/docker/registry# 启动Registry仓库docker run -d --name registry1 --restart=always -p 5000:5000 \-v /data/docker/registry:/var/lib/registry registry# 查看仓库中的镜像curl -X GET http://192.168.137.111:5000/v2/_catalog

客户端推送镜像

修改images仓库中镜像的名字

在镜像名字前加registry仓库地址和端口, 使之和registry仓库地址匹配, 只有Docker Hub 上的官方镜像可以省略仓库地址和项目名字,因为默认镜像下载地址就是docker hub

# 修改images仓库中镜像的名字docker tag centos:7 192.168.137.111:5000/centos7:v1

客户端添加私有仓库地址:vim /etc/docker/daemon.json

{  "insecure-registries": ["192.168.137.111:5000"],  "registry-mirrors": ["https://w0ckwo1v.mirror.aliyuncs.com"]}----------------------------------------------------------------# 重启dockersystemctl restart docker

推送镜像到镜像仓库

docker push 192.168.137.111:5000/centos7:v1# 查看仓库中的镜像curl -X GET http://192.168.137.111:5000/v2/_catalog

测试拉取私有仓库镜像

# 删除有原有镜像docker rmi 192.168.137.111:5000/centos7:v1 # 拉取私有仓库镜像Docker pull 192.168.137.111:5000/centos7:v1

镜像导入导出
# 导出镜像docker save -o centos7.tar centos:7

# 删除原有镜像docker rmi centos:7# 导入镜像docker load < centos-7.tar |   docker load -i centos-7.tar 

2、Nginx 代理 registry 仓库
SSL 证书 & https 协议
SSL证书
https协议

SSL 证书,也称为 SSL 服务器证书,是遵守 SSL 协议的一种数字证书,由全球信任的证书颁发机构 (CA) 验证服务器身份后颁发,将 SSL 证书安装在网站服务器上,可以使用https加密协议访问网站。

ssl证书用来认证服务器真实身份,钓鱼欺诈网站泛滥,用户如何识别网站是钓鱼网站还是安全网站?网站部署全球信任的SSL证书后,浏览器内置安全机制,实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。

https协议可以看成是HTTP+SSL的结合体,https实现网站加密传输,用户通过http协议访问网站时,浏览器和服务器之间是明文传输,这就意味着用户填写的密码、帐号、交易记录等机密信息都是明文,随时可能被泄露、窃取、篡改,被黑客加以利用。网站安装SSL证书后,使用https加密协议访问网站,可激活客户端浏览器到网站服务器之间的"SSL加密通道"(SSL协议),实现高强度双向加密传输,防止传输数据被泄露或篡改。

SSL 的验证流程

使用证书认证比我们之前秘钥认证多了一个用户浏览器访问证书颁发机构验证服务器颁发公钥的合法性。浏览器默认集成了证书颁发机构。

证书认证采用非对称加密,公钥和私钥都可以用来加密数据,用另一个解开,公钥加密数据,然后私钥解密的情况被称为加密解密,私钥加密数据,公钥解密一般被称为签名和验证签名

客户端安装 Nginx

主机名

ip

安装服务

角色

node-10

192.168.137.110

docker、Nginx

Registry客户端

node-11

192.168.137.111

docker,Registry

Registry服务器

# 安装nginx依赖包yum -y install pcre-devel zlib-devel openssl openssl-devel epel-release# 安装nginxyum install -y nginx

使用 openssl 生成CA根证书和根证书key

如果你有经过认证机构认证的证书,则直接使用将证书放入nginx目录下即可。如果没有,则使用openssl创建自签名证书

查看ca证书默认配置:cat /etc/pki/tls/openssl.cnf

vim /etc/pki/tls/openssl.cnf-----------------openssl.cnf---------------------------req_extensions = v3_req-----------------openssl.cnf---------------------------

创建根证书key

cd /etc/pki/CA/openssl genrsa -out private/cakey.pem 2048

# 生成根证书openssl req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem

req

证书请求的子命令,请求生成证书

x509

表示输出证书,X509是通用的证书文件格式

days

证书有效期

OpenSSL生成密钥文件的格式就只有PEM和DER两种格式,PEM的是将密钥用base64编码(base64就是一种基于64个可打印字符来表示二进制数据的方法)表示出来的,直接打开你能看到一串的英文字母,DER格式是二进制的密钥文件

创建 Nginx 服务证书
[root@node-10 CA] mkdir /etc/pki/CA/sslcd /etc/pki/CA/ssl/openssl genrsa -out nginx.key 2048

为nginx web服务器生成证书签署请求

# 为nginx web服务器生成证书签署请求[root@cong10 ssl] openssl req -new -key nginx.key -out nginx.csr

Common Name一定要是访问nginx的web服务器的域名。这里使用registry.test.com域名访问后端镜像仓库。

创建证书序列号文件、证书索引文件:第一次创建的时候需要给予证书序列号

[root@node-10 ssl] touch /etc/pki/CA/{serial,index.txt}echo 00 > /etc/pki/CA/serial# 使用私有CA根据请求签发服务端证书openssl ca -in nginx.csr -keyfile /etc/pki/CA/private/cakey.pem -cert \/etc/pki/CA/cacert.pem -days 3650 -out nginx.crt

配置启动 Nginx

编写nginx配置文件:vim /etc/nginx/nginx.conf

upstream docker-registry {     ip_hash;     server 192.168.137.111:5000;     server 192.168.137.111:5001;}server {    listen       80;    listen       [::]:80;    server_name  registry.test.com;    location / {            return 301 https://$host$request_uri;    }    # Load configuration files for the default server block.    include /etc/nginx/default.d/*.conf;    error_page 404 /404.html;    location = /404.html {    }    error_page 500 502 503 504 /50x.html;    location = /50x.html {    }}server {    listen       443 ssl http2;    listen       [::]:443 ssl http2;    server_name  registry.test.com;    ssl_certificate /etc/pki/CA/ssl/nginx.crt;    ssl_certificate_key /etc/pki/CA/ssl/nginx.key;    ssl_session_cache shared:SSL:1m;    ssl_session_timeout  10m;    ssl_ciphers HIGH:!aNULL:!MD5;    ssl_prefer_server_ciphers on;    location / {       auth_basic "Registry realm";       auth_basic_user_file /etc/nginx/nginx.htpasswd;       proxy_pass http://docker-registry;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       proxy_set_header X-Forward-Proto $scheme;       proxy_connect_timeout 900;       proxy_read_timeout 900;       proxy_send_timeout 900;    }    # Load configuration files for the default server block.    include /etc/nginx/default.d/*.conf;    error_page 404 /404.html;        location = /40x.html {    }    error_page 500 502 503 504 /50x.html;        location = /50x.html {    }    }

配置nginx认证

yum -y install httpd-toolshtpasswd -bc /etc/nginx/nginx.htpasswd admin 123456

启动 Nginx

# 启动nginxsystemctl enable nginxsystemctl start nginx# 查看nginx端口netstat -antup | grep nginx

配置hosts解析

vim /etc/hosts192.168.137.110 registry.test.com

访问测试

# curl命令访问curl -k -u admin:123456 https://registry.test.com/v2/_catalog

服务端配置 docker

添加hosts解析

[root@node-11 ~] vim /etc/hosts192.168.137.110 registry.test.com

添加registry仓库

[root@node-11 ~] vim /etc/docker/daemon.json{  "insecure-registries": ["https://registry.test.com"],  "registry-mirrors": ["https://0u0do0ns.mirror.aliyuncs.com"]}

注意:如果有多个私有仓库,请在insecure-registries列表里使用逗号分隔

重启docker

systemctl restart docker# 登陆registry仓库docker login https://registry.test.com

上传镜像
# 给busybox镜像打标签docker tag busybox registry.test.com/busybox# 推送镜像docker push registry.test.com/busybox# 查看仓库镜像curl -k -u admin:123456 https://registry.test.com/v2/_catalogcurl -k -u admin:123456 'https://registry.test.com/v2/busybox/tags/list'

registry 仓库镜像删除
# 删除repodocker exec registry1 rm -rf /var/lib/registry/docker/registry/v2/repositories/centos7# 清除blobdocker exec registry1 registry garbage-collect /etc/docker/registry/config.yml

# 查看registry仓库镜像curl -k -u admin:123456 https://registry.test.com/v2/_catalog

3、Harbor 仓库搭建

项目地址:GitHub - goharbor/harbor: An open source trusted cloud native registry project that stores, signs, and scans content.

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能,具有web管理功能,操作其实是非常简单易行的。

Harbor是一个基于Apache协议的开源软件,主要开发语言为go,harbor本身也是基于docker镜像,使用docker-compose来进行编排部署。

https://github.com/goharbor/harbor/releases/download/v2.6.0/harbor-online-installer-v2.6.0.tgz

Docker-compose

项目地址: https://github.com/docker/compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用docker-compose up,就可以从YML 文件配置中创建并启动所有服务。

# Docker-compose下载(新版本docker集成compose,无需安装)curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose# 查看docker-compose版本docker-compose -v#新版本docker compose使用方法[root@node-11 ~] docker compose version 

创建 Harbor 服务证书
[root@node-10 ssl] mkdir /etc/pki/CA/harbor && cd /etc/pki/CA/harboropenssl genrsa -out harbor.key 2048

# 为harbor服务器生成证书签署请求openssl req -new -key harbor.key -out harbor.csr

# 使用私有CA根据请求签发服务端证书openssl ca -in harbor.csr -keyfile /etc/pki/CA/private/cakey.pem -cert \/etc/pki/CA/cacert.pem -days 3650 -out harbor.crt

# 拷贝证书到cong12scp -r /etc/pki/CA/harbor/ 192.168.137.111:/etc/pki/CA

部署 Harbor

解压软件包

tar -zxvf harbor-online-installer-v2.6.0.tgz -C /usr/local/ls /usr/local/harbor/

配置文件harbor.yml

cd /usr/local/harbor/mv harbor.yml.tmpl harbor.yml vim harbor.yml --------------------- harbor.yml -----------------------hostname: 192.168.137.111https:  # https port for harbor, default is 443  port: 443  # The path of cert and key files for nginx  certificate: /etc/pki/CA/harbor/harbor.crt  private_key: /etc/pki/CA/harbor/harbor.key--------------------- harbor.yml -----------------------

安装Harbor仓库

./install.sh

# 查看Harbor依赖的镜像及其健康状况docker-compose -f docker-compose.yml ps

登录Harbor并创建羡慕:账户为admin ,密码为 Harbor12345,该密码的初始配置在harbor.yml文件中

点击镜像仓库可以看到推送命令,这里包含有docker以及k8s的Helm

配置 Nginx 代理 Harbor

添加harbor.conf:[root@node-10 ~] vim /etc/nginx/conf.d/harbor.conf

server {    listen       443 ssl http2;    listen       [::]:443 ssl http2;    server_name  harbor.test.com;    ssl_certificate /etc/pki/CA/harbor/harbor.crt;    ssl_certificate_key /etc/pki/CA/harbor/harbor.key;    ssl_session_cache shared:SSL:1m;    ssl_session_timeout  10m;    ssl_ciphers HIGH:!aNULL:!MD5;    ssl_prefer_server_ciphers on;    location / {           proxy_pass https://192.168.137.111;           proxy_set_header X-Real-IP $remote_addr;           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;           proxy_set_header X-Forward-Proto $scheme;           proxy_connect_timeout 900;           proxy_read_timeout 900;           proxy_send_timeout 900;       }    # Load configuration files for the default server block.    include /etc/nginx/default.d/*.conf;    error_page 404 /404.html;        location = /40x.html {    }    error_page 500 502 503 504 /50x.html;        location = /50x.html {    }    }---------------------------------------------# 重载 nginxnginx -s reload

修改hosts:vim /etc/hosts

192.168.137.110 harbor.test.com

添加harbor仓库:vim /etc/docker/daemon.json

{  "insecure-registries": ["192.168.137.111:5000","https://harbor.test.com"],  "registry-mirrors": ["https://0u0do0ns.mirror.aliyuncs.com"]}-----------------------------------------------# 重启docker[root@node-10 ~] systemctl restart docker

上传镜像

推送镜像

# 登陆harbor[root@node-10 ~] docker login https://harbor.test.com

# 推送镜像[root@node-10 ~] docker tag busybox:latest harbor.test.com/docker/busybox:v2[root@node-10 ~] docker push harbor.test.com/docker/busybox:v2

拉取镜像

docker pull harbor.test.com/docker/busybox:v1


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/170176.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1