云原生应用(4)之阿里云镜像加速以及镜像仓库

一、容器镜像加速器

1.1 获取阿里云容器镜像加速地址

        登录阿里云。

1.2 配置Docker daemon加速器 

        添加daemion.json文件。

 添加daemon.json配置文件
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
        "registry-mirrors": ["https://s27w6kze.mirror.aliyuncs.com"]
}

 重启docker
# systemctl daemon-reload
# systemctl restart docker

 尝试下载容器镜像
# docker pull centos

二、 容器镜像仓库 

2.1 Docker hub 

2.1.1 注册  

 

2.1.2 登录 

 

2.1.3 创建容器仓库 

 

 

 

2.1.4 在本地登录Docker Hub 

 默认可以不添加docker hub容器镜像仓库地址

[root@hcss-ecs-c9aa ~]# docker login
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/

Username: jokermqc
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
[root@hcss-ecs-c9aa ~]# 

 登出

[root@hcss-ecs-c9aa ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
[root@hcss-ecs-c9aa ~]# 

2.1.5 上传容器镜像 

 在登录Docker Hub主机上传容器镜像,向全球用户共享容器镜像。

为容器镜像重新打标记

原始容器镜像

[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
重新为容器镜像打标记

[root@hcss-ecs-c9aa ~]# docker tag centos jokermqc/centons:v1
[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
jokermqc/centons   v1        5d0da3dc9764   2 years ago   231MB
centos             latest    5d0da3dc9764   2 years ago   231MB
[root@hcss-ecs-c9aa ~]# 

 

 将本地镜像推送到docker hub中

[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
jokermqc/centons   v1        5d0da3dc9764   2 years ago   231MB
centos             latest    5d0da3dc9764   2 years ago   231MB
[root@hcss-ecs-c9aa ~]# docker push jokermqc/centos:v1
The push refers to repository [docker.io/jokermqc/centos]
74ddd0ec08fa: Mounted from library/centos 
v1: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
[root@hcss-ecs-c9aa ~]# 

 

2.1.6 下载容器镜像 

 [root@hcss-ecs-c9aa ~]# docker images -q | xargs docker rmi
Error response from daemon: conflict: unable to delete 5d0da3dc9764 (must be forced) - image is referenced in multiple repositories
Error response from daemon: conflict: unable to delete 5d0da3dc9764 (must be forced) - image is referenced in multiple repositories
Error response from daemon: conflict: unable to delete 5d0da3dc9764 (must be forced) - image is referenced in multiple repositories
[root@hcss-ecs-c9aa ~]# docker pull jokermqc/centos:v1
v1: Pulling from jokermqc/centos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Image is up to date for jokermqc/centos:v1
docker.io/jokermqc/centos:v1
[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
jokermqc/centos    v1        5d0da3dc9764   2 years ago   231MB
centos             latest    5d0da3dc9764   2 years ago   231MB
jokermqc/centons   v1        5d0da3dc9764   2 years ago   231MB
[root@hcss-ecs-c9aa ~]#

 2.2 harbor

2.2.1 获取docker compost二进制文件 

 下载docker-compose二进制文件
# wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64

 查看已下载二进制文件
# ls
docker-compose-Linux-x86_64

 移动二进制文件到/usr/bin目录,并更名为docker-compose
# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

 为二进制文件添加可执行权限
# chmod +x /usr/bin/docker-compose

 安装完成后,查看docker-compse版本
# docker-compose version
docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

 2.2.2 获取harbor安装文件

 

 

 

 

 下载harbor离线安装包
# wget https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz

 查看已下载的离线安装包
# ls
harbor-offline-installer-v2.4.1.tgz

 2.2.3 获取TLS文件

 查看准备好的证书
# ls
kubemsb.com_nginx.zip

 解压证书压缩包文件
# unzip kubemsb.com_nginx.zip
Archive:  kubemsb.com_nginx.zip
Aliyun Certificate Download
  inflating: 6864844_kubemsb.com.pem
  inflating: 6864844_kubemsb.com.key

 查看解压出的文件
# ls
6864844_kubemsb.com.key
6864844_kubemsb.com.pem

2.2.4 修改配置文件 

 解压harbor离线安装包
# tar xf harbor-offline-installer-v2.4.1.tgz

 查看解压出来的目录
# ls
harbor 

 移动证书到harbor目录
# # mv 6864844_kubemsb.com.* harbor

创建配置文件
# cd harbor/
# mv harbor.yml.tmpl harbor.yml 

 修改配置文件内容

# vim harbor.yml

# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: www.kubemsb.com 修改为域名,而且一定是证书签发的域名

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /root/harbor/6864844_kubemsb.com.pem 证书
  private_key: /root/harbor/6864844_kubemsb.com.key 密钥

# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true
#   # put your cert and key files on dir
#   dir: /etc/harbor/tls/internal

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: 12345 访问密码
......

2.2.5 执行预备脚本 

 # ./prepare

 输出
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/portal/nginx.conf
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

2.2.6 执行安装脚本 

 # ./install.sh

 输出
[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.12

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.25.0

[Step 2]: loading Harbor images ...

[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor

[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db     ... done
Creating registry      ... done
Creating registryctl   ... done
Creating redis         ... done
Creating harbor-portal ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----

2.2.7 验证安装情况 

 # docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED              STATUS                        PORTS                                                                            NAMES
71c0db683e4a   goharbor/nginx-photon:v2.4.1         "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   nginx
4e3b53a86f01   goharbor/harbor-jobservice:v2.4.1    "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                    harbor-jobservice
df76e1eabbf7   goharbor/harbor-core:v2.4.1          "/harbor/entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                    harbor-core
eeb4d224dfc4   goharbor/harbor-portal:v2.4.1        "nginx -g 'daemon of…"   About a minute ago   Up About a minute (healthy)                                                                                    harbor-portal
70e162c38b59   goharbor/redis-photon:v2.4.1         "redis-server /etc/r…"   About a minute ago   Up About a minute (healthy)                                                                                    redis
8bcc0e9b06ec   goharbor/harbor-registryctl:v2.4.1   "/home/harbor/start.…"   About a minute ago   Up About a minute (healthy)                                                                                    registryctl
d88196398df7   goharbor/registry-photon:v2.4.1      "/home/harbor/entryp…"   About a minute ago   Up About a minute (healthy)                                                                                    registry
ed5ba2ba9c82   goharbor/harbor-db:v2.4.1            "/docker-entrypoint.…"   About a minute ago   Up About a minute (healthy)                                                                                    harbor-db
dcb4b57c7542   goharbor/harbor-log:v2.4.1           "/bin/sh -c /usr/loc…"   About a minute ago   Up About a minute (healthy)   127.0.0.1:1514->10514/tcp                                                        harbor-log

2.2.8 访问harbor UI界面

 

三、docker 镜像上传至Harbor

3.1 修改docker daemon使用harbor 

        前面我们配置了/etc/docker/daemon.json文件里面配置使用了阿里云的容器镜像加速器,如果我们要使用Harbor,那就要修改成我们对应的harbor地址。

添加/etc/docker/daemon.json文件,默认不存在,需要手动添加
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
        "insecure-registries": ["www.xxxx.com"]
}

 重启加载daemon配置
# systemctl daemon-reload

 重启docker
# systemctl restart docker

3.2 docker tag 

 查看已有容器镜像文件
# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED        SIZE
centos     

 为容器镜像重新打标记

原始容器镜像

[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
重新为容器镜像打标记

[root@hcss-ecs-c9aa ~]# docker tag centos jokermqc/centons:v1
[root@hcss-ecs-c9aa ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
jokermqc/centons   v1        5d0da3dc9764   2 years ago   231MB
centos             latest    5d0da3dc9764   2 years ago   231MB
[root@hcss-ecs-c9aa ~]# 

3.3 docker push 

 # docker login www.xxxx.com
Username: admin  用户名 admin
Password:        密码   12345
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仓库
# docker push www.xxxx.com/library/centos:v1

3.4 docker pull 

 在其它主机上下载或使用harbor容器镜像仓库中的容器镜像

在本地添加/etc/docker/daemon.json文件,其中为本地主机访问的容器镜像仓库
# vim /etc/docker/daemon.json
# cat /etc/docker/daemon.json
{
        "insecure-registries": ["www.xxxx.com"]

 # systemctl daemon-reload
# systemctl restart docker

 下载容器镜像
# docker pull www.xxx.com/library/centos:v1
v1: Pulling from library/centos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for www.kubemsb.com/library/centos:v1
www.kubemsb.com/library/centos:v1

 查看已下载的容器镜像
# docker images
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
www.xxx.com/library/centos   v1        5d0da3dc9764   4 months ago   231MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/458616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统

基于JavaSpringmvcvueelement实现大学生科技创新创业项目管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…

酷开科技深度切入生活,为品牌方带来确定性增长

在流量稀缺的年代,如何能让营销更出众?流量所在,就是营销所在,就是消费互联网的主战场。社交平台和信息流平台的融合,是两个互联网底层逻辑的驱动,而流量搅动的背后,是互联网世界的底层逻辑在一…

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中,状态管理是一个绕不开的话题。无论是新手还是有经验的开发者,都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案,如直接的状态传递(俗称"属性钻取")、Co…

什么是分段锁?

1、典型回答 分段锁是一种将锁细化到每个段(Segment) 级别的锁设计。在 ConcurrentHashMap 中,它将整个数据结构分成多个段,每个段只锁定自己的一部分数据。每个段可以看作是一个独立的分组,只锁定该段(Segment)内部的数据操作,不…

Go函数全景:从基础到高阶的深度探索

目录 一、Go函数基础1.1 函数定义和声明基础函数结构返回值类型和命名返回值 1.2 参数传递方式值传递引用传递 二、Go特殊函数类型2.1 变参函数定义和使用变参变参的限制 2.2 匿名函数与Lambda表达式何为匿名函数Lambda表达式的使用场景 2.3 延迟调用函数(defer&…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:QRCode)

用于显示单个二维码的组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 二维码组件的像素点数量与内容有关,当组件尺寸过小时,可能出现无法展示内容的情况,…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 3月15日,星期五

每天一分钟,知晓天下事! 2024年3月15日 星期五 农历二月初六 1、 发改委:积极支持行业地位显著、信用优良的优质企业借用外债。 2、 央行发布外籍来华人员支付指南,可选移动支付、银行卡、现金等支付方式。 3、 江苏省今年将全面…

2024三掌柜赠书活动第十五期:Python高效编程——基于Rust语言

目录 前言 关于Rust语言 Rust与Python的集成 使用案例 关于《Python高效编程——基于Rust语言》 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《Python高效编程——基于Rust语言》全书速览 结束语 前言 随着互联网的快速发展和应用程序的广泛使用&#xff…

解释器模式(Interpreter Pattern)

解释器模式 说明 解释器模式(Interpreter Pattern)属于行为型模式,是指给定一门语言,定义它的语法(文法)的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一…

教你三指针拿捏链表翻转

类似上图,其实步骤很简单,用三个指针pre,cur,temp,看英文也知道具体含义,前向,当前,和用于保存剩余的链表 ,具体看下图,很清晰 class Solution { public:List…

Mindlin厚板单元Matlab有限元编程 | 板单元 | 【Matlab源码 + 理论文本】

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

操作系统总结(第二周 第一堂)

前言: 第一周的重点就在于一张图表: 基于这张图,我们将陷入内核分为了两个大块Trap和Interrupt。同时我们知道一件事情任何一次I/O操作或者错误程序操作都将陷入内核,从而使得内核可以监控所有的外部设备以及维护整个电脑程序运行…

YOLOv9改进策略:注意力机制 |通道注意力和空间注意力CBAM | GAM超越CBAM,不计成本提高精度

💡💡💡本文改进内容:通道注意力和空间注意力CBAM,全新注意力GAM:超越CBAM,不计成本提高精度 改进结构图如下: YOLOv9魔术师专栏 ☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️☁️…

【Claude 3 Haiku】基于Amazon Bedrock初体验Claude 3 Haiku 模型

文章目录 1. Claude 3 Haiku介绍2. Amazon Bedrock介绍3. 访问 Amazon Bedrock UI4. 授权Claude 3 Haiku访问权限5. Claude 3 Haiku 初体验6. Claude 3 Haiku 用例6.1 让Claude 3 Haiku写一段Code6.2 让Claude 3 Haiku翻译英文6.3 让Claude 3 Haiku 识别图片并作文字性描述 7. …

第六节:使用SMB开发WebService

一、概述 webservice在日常开发中是常用的接口形式,SMB在设计之初就将webservice作为重要的代理协议。在组件库中提供了webservice input和webservice output两个组件,分别用于发布接口和调用接口。 二、发布webservice 在csdnProject工程中创建名为c…

教师人事档案管理系统|基于springboot框架+ Mysql+Java+B/S架构的教师人事档案管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 教师后台功能模块 系统功能设计 数据库E-R图设计 lu…

永热爱 敢向前 | Paraverse平行云的2023 年终总结

永热爱,敢向前 值此新年,回顾2023,仅以此句,献给所有XR产业信仰者 2023 年,是XR产业技术和场景承上启下的关键之年 在这场波澜壮阔的技术潮中 「Paraverse平行云」踏浪前行 已是第八个年头,让我们一起…

【C++map和set容器:AVL树、红黑树详解并封装实现map和set】

[本节目标] map和set底层结构 AVL树 红黑树 红黑树模拟实现STL中的map和set 1.底层结构 前面对map/multimap/set/multiset进行了简单的介绍,在其文档介绍中发现,这几个容器有个 共同点是:其底层都是按照二叉搜索树来实现的,但…

如何在Linux使用docker部署Swagger Editor并实现无公网IP远程协同编辑API文档

目录 前言 Swagger Editor本地接口文档公网远程访问 1. 部署Swagger Editor 2. Linux安装Cpolar 3. 配置Swagger Editor公网地址 4. 远程访问Swagger Editor 5. 固定Swagger Editor公网地址 结语 前言 作者简介: 懒大王敲代码,计算机专业应届生 …

独立开发的轻量级简洁开源论坛BBS PHP源码 – 2023新版发布

最新的轻量级开源论坛php源码发布啦!这是一款独立开发的论坛系统,可以帮助你快速地开发出你想要的网站。 如果你是PHP初学者,这款论坛系统非常适合你入门学习。不过,需要注意的是,由于它并没有进行商业化改造&#xf…