GitHub Actions 工作流 CI/CD 的“发布”
GitHub Actions 工作流 CI/CD 的“发布”围绕你的 file-server-docker 项目,把五件事串起来: 镜像标签(Tag) Registry 登录 docker tag docker push 版本回滚 第一步:理解发布的完整流程先看整体链路: 12345678flowchart TD A["GitHub 代码仓库\n源代码 + Dockerfile"] --> B["docker build\n构建本地 Docker 镜像"] --> C["docker tag\n为同一个镜像增加仓库地址和版本标签"] --> D["Registry 登录\n获得向目标镜像仓库推送的权限"] --> E["docker push\n将镜像上传到阿里云 ACR"] --> F["部署服务器\n拉取指定版本,启动容器,验证健康状态"] 注意:docker tag 不负责上传...
GitHub Actions 工作流 CI/CD 触发器与执行顺序
GitHub Actions 工作流 CI/CD 触发器与执行顺序一、先理解 GitHub Actions 是怎么工作的可以把 GitHub Actions 理解成 GitHub 提供的一套自动化执行系统。 你平时可能会这样操作: 修改项目代码。 把代码提交到 Git。 将代码推送到 GitHub。 手动构建 Docker 镜像。 把镜像推送到阿里云 ACR。 登录服务器,更新容器。 GitHub Actions 的作用,就是把这些步骤写进配置文件,让 GitHub 在指定的条件满足时,自动执行这些任务。 整体过程如下: 123456flowchart TD A["发生某个事件\n例如 push、Pull Request、定时任务"] --> B["匹配 Workflow 的触发条件\n检查事件类型、分支、路径等规则"] B --> C["创建一次 Workflow 运行\nGitHub 根据 Jobs 安排执行任务"] C --> D["启动 Runner 执...
GitHub Actions + Docker + ACR + GHCR 自动化构建与发布
GitHub Actions + Docker + ACR + GHCR 自动化构建与发布 GitHub Actions + Docker + 阿里云 ACR + GitHub Container Registry(GHCR)自动化构建与发布工作流。 一、先理解 CI/CD 到底是什么 CI(持续集成):代码提交后,自动检查代码是否有问题、能否构建、基本功能能否运行。 CD(持续交付 / 持续部署):把验证通过的程序交付出去,例如发布 Docker 镜像;如果进一步自动更新生产服务器,才是完整的自动部署流程。 你的这个工作流已经包含了自动测试和镜像发布,但从这份 YAML 来看,它没有直接登录你的生产服务器,也没有执行服务器上的 docker compose pull 或 docker compose up -d。所以它完成的是“构建、测试、发布镜像”,不是自动更新运行中的服务。 GitHub Actions 的核心机制是:事件触发工作流,工作流运行一个或多个 Job,每个 Job 再依次执行 Steps。 二、你的工作流具体做了什么?查看这份文件。它只有一...
使用kubeadm初始化IPV4/IPV6集群
使用kubeadm初始化IPV4/IPV6集群CentOS 配置YUM源12345678910111213141516171819202122cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.ustc.edu.cn/kubernetes/core:/stable:/v1.37/rpm/enabled=1gpgcheck=1gpgkey=https://pkgs.k8s.io/core:/stable:/v1.37/rpm/repodata/repomd.xml.keyEOF# 将 SELinux 设置为 permissive 模式(相当于将其禁用)sudo setenforce 0sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/configyum install -y kubelet kubea...
微WEB文件服务 Docker 部署指南
微WEB文件服务 Docker 部署指南本文介绍如何使用 Docker Compose 部署完整的文件上传/下载服务。完整部署包含 两个镜像: 应用镜像(app):运行 Python / Gunicorn 后端,处理登录、上传、分片上传及文件下载等 API。 网页入口镜像(nginx):提供网页静态文件、HTTPS 入口,并将 API 请求转发给应用容器。 CI 会将这两个镜像分别发布到阿里云 ACR 和 GitHub Container Registry(GHCR)。每个镜像包含三个标签:latest、Git 提交短 SHA、北京时间构建时间戳(YYYYMMDD-HHMMSS)。这些是同一镜像的不同标签,不是额外的独立镜像。 一、镜像地址阿里云 ACR(默认) 用途 镜像地址 应用后端 registry.cn-hangzhou.aliyuncs.com/chenby/file-server-docker:latest Nginx 网页入口 registry.cn-hangzhou.aliyuncs.com/ch...
Kubernetes Gateway API 完全指南
Kubernetes Gateway API 完全指南目录 简介 基础概念 架构原理 实践指南 最佳实践 常见问题与故障排查 简介Kubernetes Gateway API 是一个面向服务的、可扩展的 Kubernetes 流量管理标准,由 SIG-NETWORK 社区维护。它是 Ingress API 的演进版本,旨在解决 Ingress 在表达能力、扩展性和标准化方面的局限性。 为什么需要 Gateway API?传统 Ingress 的局限性: 功能有限:仅支持 HTTP/HTTPS,缺乏对 TCP、UDP、gRPC 等协议的原生支持 扩展性差:不同 Ingress Controller 使用不同的注解(annotation),导致配置不兼容 表达能力弱:难以实现复杂的流量管理场景(如流量分割、镜像、高级路由匹配) 角色分离不清:基础设施团队和应用团队的职责边界模糊 Gateway API 的优势: 角色导向:明确区分集群操作员、基础设施提供商和应用开发者的职责 表达式丰富:支持更复杂的路由规则、流量管理和安全策略 协议无关:原生支持 HTTP、HTT...
二进制安装Kubernetes(k8s)v1.36.0 - 精简版本
二进制安装Kubernetes(k8s)v1.36.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
二进制安装Kubernetes(k8s)v1.36.0
二进制安装Kubernetes(k8s)v1.36.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
二进制安装Kubernetes(k8s)v1.35.0 - 精简版本
二进制安装Kubernetes(k8s)v1.35.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了支持IPv4+IPv6双栈。本文是精简文档,删除了注释以及一些基础的内容,社交媒体超出字数限制,完整版见:项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs...
二进制安装Kubernetes(k8s)v1.35.0
二进制安装Kubernetes(k8s)v1.35.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
升级二进制kubernetes集群(大版本升级)
升级二进制kubernetes集群(大版本升级)此文档基于我的二进制安装仓库https://github.com/cby-chen/Kubernetes 基础操作查看当前版本信息12345678[root@k8s-master01 ~]# kubectl get nodeNAME STATUS ROLES AGE VERSIONk8s-master01 Ready <none> 110d v1.34.3k8s-master02 Ready <none> 110d v1.34.3k8s-master03 Ready <none> 110d v1.34.3k8s-node01 Ready <none> 110d v1.34.3k8s-node02 Ready <none> 110d v1.34.3[root@k8s-master01 ~]# 主机域名以及IP地址123456789101...
升级二进制kubernetes集群(小版本升级)
升级二进制kubernetes集群(小版本升级)此文档基于我的二进制安装仓库https://github.com/cby-chen/Kubernetes 基础操作查看当前版本信息12345678[root@k8s-master01 ~]# kubectl get nodeNAME STATUS ROLES AGE VERSIONk8s-master01 Ready <none> 110d v1.34.0k8s-master02 Ready <none> 110d v1.34.0k8s-master03 Ready <none> 110d v1.34.0k8s-node01 Ready <none> 110d v1.34.0k8s-node02 Ready <none> 110d v1.34.0[root@k8s-master01 ~]# 主机域名以及IP地址123456789101...
Elasticsearch常用运维命令
Elasticsearch常用运维命令Elasticsearch 的运维命令主要集中在使用其 RESTful API 上。这些命令可以通过任何 HTTP 客户端(如 curl、Kibana Dev Tools、Postman 等)来执行。 集群健康与状态信息这是运维中最常用的一组命令,用于快速了解集群的整体状态。 查看集群健康状态1234567891011121314151617181920212223242526[root@k8s-192-168-1-140 ~]# PASSWORD=$(kubectl get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}')[root@k8s-192-168-1-140 ~]# curl -s -XGET -u "elastic:$PASSWORD" -k "https://10.68.66.232:9200/_cluster/hea...
K8S 中使用 YAML 安装 ECK
K8S 中使用 YAML 安装 ECKKubernetes 是目前最受欢迎的容器编排技术,越来越多的应用开始往 Kubernetes 中迁移。Kubernetes 现有的 ReplicaSet、Deployment、Service 等资源对象已经可以满足无状态应用对于自动扩缩容、负载均衡等基本需求。但是对于有状态的、分布式的应用,通常拥有各自的一套模型定义规范,例如 Prometheus,Etcd,Zookeeper,Elasticsearch 等等。部署这些分布式应用往往需要熟悉特定领域的知识,并且在扩缩容和升级时需要考虑如何保证应用服务的可用性等问题。为了简化有状态、分布式应用的部署,Kubernetes Operator 应运而生。 Kubernetes Operator 是一种特定的应用控制器,通过 CRD(Custom Resource Definitions,自定义资源定义)扩展 Kubernetes API 的功能,可以用它来创建、配置和管理特定的有状态应用,而不需要直接去使用 Kubernetes 中最原始的一些资源对象,比如 Pod,Deployment,Ser...
Kubernetes核心-Ingress-metallb
Kubernetes核心-Ingress-metallb使用一种能感知协议配置的机制来解析 URI、主机名称、路径等 Web 概念, 让你的 HTTP(或 HTTPS)网络服务可被访问。 Ingress 概念允许你通过 Kubernetes API 定义的规则将流量映射到不同后端。 部署metallbMetalLB 是Kubernetes 的一个裸机环境下的负载均衡器,它为LoadBalancer 类型的Service 提供IP 地址分配和对外流量广播,从而使裸机Kubernetes 集群也能像云环境一样通过外部IP 访问内部服务 下载部署1234567891011121314151617# 我可以连接国际网络,就直接部署了kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml# 网络不通畅可以使用手动修改镜像地址# 下载yaml配置wget https://raw.githubusercontent.com/me...
二进制安装Kubernetes(k8s)v1.34.0
二进制安装Kubernetes(k8s)v1.34.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
批量配置主机IP地址
批量配置主机IP地址背景我在经常装一些主机,主机都是虚拟机克隆出来的,网卡的uuid不会变,自动获取IPv6地址会出现问题,每次都需手动配置,比较麻烦。所以编写了一个自动配置地址的脚本。 我的IPv6是需要通过DHCPv6自动下发公网地址,但是我又需要一个简短的内网IPv6地址,所以我的脚本中,只配置了一个内网的地址。这个地址没有配置网关。 免密第一步先将所有的主机配置免密登录 1234567yum install -y sshpassssh-keygen -f /root/.ssh/id_rsa -P ''export IP="192.168.1.192 192.168.1.194 192.168.1.196 192.168.1.198 192.168.1.200"export SSHPASS=123123for HOST in $IP;do sshpass -e ssh-copy-id -o StrictHostKeyChecking=no $HOSTdone 修改ip脚本修改你的环境的ip地址,以及网络配置参数, 12345...
K8s 1.33 原地扩缩容特性
K8s 1.33 原地扩缩容特性背景在创建好的pod容器中,进行了资源限制,在之前的版本中,修改资源配置是需要重启pod才可生效,在1.33版本的kubernetes可以直接调整正在运行的 Pod 的 CPU 和内存配置,而无需重启pod容器。 需要注意的是,此功能目前为bate版本,并且在集群中默认开启。我们可以直接使用该新特性。 操作演示创建一个资源监控 Pod1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586[root@k8s-master01 ~]# vim resize.yaml [root@k8s-master01 ~]# cat resize.yamlapiVersion: v1kind: Podmetadata: name: resize-demospec: containers: - ...
二进制安装Kubernetes(k8s)v1.33.0
二进制安装Kubernetes(k8s)v1.33.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
搭建Zookeeper、Kafka集群
搭建Zookeeper、Kafka集群Zookeeper、Kafka集群系统环境配置配置IP123456789101112131415161718192021222324252627282930313233343536373839ssh root@192.168.1.190 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"ssh root@192.168.1.192 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"ssh root@192.168.1.194 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"ssh root@192.168.1.190 "nmcli con delete uuid d1141403-18c6-3149-907c-ed5f09663a7f;nmcli con add type ether...
使用kubeadm部署高可用IPV4/IPV6集群---V1.32
使用kubeadm部署高可用IPV4/IPV6集群https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 k8s基础系统环境配置配置IP123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138# 注意!# 若虚拟机是进行克隆的那么网卡的UUID和MachineID会重复# 需要重新生成新的UUIDUUID和MachineID# UUID和MachineID重复无法DH...
使用Ollama部署deepseek大模型
使用Ollama部署deepseek大模型前置条件12使用英伟达显卡下载cuda驱动https://developer.nvidia.com/cuda-downloads OllamaOllama 官方版: https://ollama.com/ 我的显卡在Windows电脑上面 所以使用Windows的安装方式去安装若你的显卡是在Linux上面 可以使用如下命令安装 1curl -fsSL https://ollama.com/install.sh | sh 当然Ollama不只是可以启动deepseek模型,也可以启动他的模型https://ollama.com/search 1234567891011121314151617181920212223242526272829303132333435# 模型的安装命令# 1.5B Qwen DeepSeek R1 # 所需空间大约 1.1Gollama run deepseek-r1:1.5b# 7B Qwen DeepSeek R1# 所需空间大约 4.7Gollama run deepseek-r1:7b# 8B Ll...
Grafana Prometheus Altermanager 监控系统
Grafana Prometheus Altermanager 监控系统基本概念Prometheus 是一套开源的系统监控、报警、时间序列数据库的组合,最初有 SoundCloud 开发的,后来随着越来越多公司使用,于是便独立成开源项目。Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,例如邮件、微信、钉钉、Slack 等常用沟通工具,而且很容易做到告警信息进行去重,降噪,分组等,是一款很好用的告警通知系统。 安装Grafana服务下载地址 https://grafana.com/grafana/download 1234567[root@jk ~]# sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.4.0-1.x86_64.rpm[root@jk ~]# systemctl enable --now grafana-server.serviceCreated symlink /etc/systemd/sys...
二进制安装Kubernetes(k8s)v1.32.0
二进制安装Kubernetes(k8s)v1.32.0介绍https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。强烈建议在Github上查看文档 !!!Github出问题会更新文档,并且后续尽可能第一时间更新新版本文档 !!!手动项目地址:https://github.com/cby-chen/Kubernetes1.环境 主机名称 IP地址 说明 软件 192.168.1.60 外网节点 下载各种所需安装包 Master01 192.168.1.31 master节点 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx Master02 192.168.1.32 master节点 kube-apiserver、kube-controller-man...
K8S 拉取私有仓库镜像
K8S 拉取私有仓库镜像在使用Kubernetes(k8s)从私有仓库拉取镜像时,会出现无法拉去镜像的情况,私有仓库需要认证才能访问,如果Kubernetes无法通过认证,就会导致拉取失败,这时我们就需要手动创建私有仓库的登录信息。 省流版123456789101112131415161718192021# 创建 secret # 【harbor-docker】 自定义名称# 【--namespace】 和应用在同一个命名空间下# 【--docker-server】 仓库的地址# 【--docker-username】 仓库的用户名# 【--docker-password】 仓库的密码[root@k8s-master01 ~]# kubectl create secret docker-registry harbor-docker --namespace=default --docker-server=z.oiox.cn:18082 --docker-username=admin --docker-password=123123secret/harbor-docker creat...
Docker Swarm 核心概念及详细使用
Docker Swarm 核心概念及详细使用Docker Swarm 介绍Docker Swarm 是 Docker 的原生集群管理工具。它的主要作用是将多个 Docker 主机集成到一个虚拟的 Docker 主机中,为 Docker 容器提供集群和调度功能。通过 Docker Swarm,您可以轻松地管理多个 Docker 主机,并能在这些主机上调度容器的部署。下面是 Docker Swarm 的一些核心功能和特点: 集群管理:Docker Swarm 允许您将多个 Docker 主机作为一个单一的虚拟主机来管理。这意味着您可以在多个不同的服务器上运行 Docker 容器,而这些服务器被统一管理。 容错和高可用性:Swarm 提供高可用性服务,即使集群中的一部分节点失败,服务仍然可以继续运行。 负载均衡:Swarm 自动分配容器到集群中的不同节点,从而实现负载均衡。它还可以根据需要自动扩展或缩减服务实例的数量。 声明式服务模型:Swarm 使用 Docker Compose 文件格式,使您可以以声明式方式定义应用的多个服务。 服务发现:Swarm 集群中的每个服务都可以通过服...
Linux防火墙firewall的使用
Linux防火墙firewall的使用CentOS 7新的防火墙服务firewalld的基本原理,它有个非常强大的过滤系统,称为 Netfilter,它内置于内核模块中,用于检查穿过系统的每个数据包。 这意味着它可以在到达目的地之前以编程方式检查、修改、拒绝或丢弃任何网络数据包,如传入、传出或转发,从 Centos-7 开始,firewalld 成为管理基于主机的防火墙服务的默认工具,firewalld 的守护进程是从 firewalld 包安装的,它将在操作系统的所有基本安装上可用,但在最小安装上不可用。 使用 FirewallD 优于“iptables”的优点 1.在运行时所做的任何配置更改都不需要重新加载或重新启动 firewalld 服务 2.通过将整个网络流量安排到区域中来简化防火墙管理 3.每个系统可以设置多个防火墙配置以更改网络环境 4.使用 D-Bus 消息系统来交互/维护防火墙设置 在 CentOS 7 或更高版本中,我们仍然可以使用经典的 iptables,如果要使用 iptables,需要停止并禁用 firewalld 服务。同时使用firewalld 和...
安装MySQL8数据库
安装MySQL8MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。 MySQL Cluster 集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。 MySQL Cluster CGE 高级集群版,需付费。 安装 mysql yum源12345[root@web ~]# wget https://repo.mysql.com//mysql84-community-release-el9-1.noarch.rpm[root@web ~]# yum install ./mysql84-community-release-el9-1.noarch.rpm [root@web ~]# 安装成功后,查看MySQL版本:12345678910111213141...
k8s的无头服务
k8s的无头服务Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提供服务发现。与普通服务不同的是Headless Services不提供负载均衡功能,每个Pod都有唯一的DNS记录,直接映射到其IP地址,适用于有状态应用的场景,如与StatefulSet一起部署数据库。这种服务使得直接访问单个Pod成为可能,而不经过负载均衡器。 因为 Headless Service 属于 Service ClusterIp 类型,所以在讲解Headless Service前,先简单说下 Service 和服务发现。 构建镜像12345678[root@chenby ~]# cat > Dockerfile <<EOFFROM nginxRUN echo '这是一个本地构建的nginx镜像,第一版' > /usr/share/nginx/html/index.htmlEOFdocker build -t z.oio...
安装Harbor镜像仓库
安装Harbor镜像仓库安装docker1curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 下载harbor安装包123456789101112# 下载Docker Harbor安装包wget https://github.com/goharbor/harbor/releases/download/v2.12.0/harbor-offline-installer-v2.12.0.tgz# 解压安装包[root@chenby ~]# tar xvf harbor-offline-installer-v2.12.0.tgz -C /usr/local/harbor/harbor.v2.12.0.tar.gzharbor/prepareharbor/LICENSEharbor/install.shharbor/common.shharbor/harbor.yml.tmpl[root@chenby ~]# cd /usr/local/harbor/ 创建证书12# 我用的是免费证书 Let...

























