热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kubernetes国外镜像的网络问题

问题使用Docker或K8s时,经常需要拉取国外镜像,从dockerhub拉的镜像姑且不论,k8s经常需要从gcr.io拉取镜像。手动搭建

问题

使用 Docker 或 K8s 时,经常需要拉取国外镜像,从 dockerhub 拉的镜像姑且不论,k8s 经常需要从 gcr.io 拉取镜像。 手动搭建 k8s 集群时,从 gcr.io 拉取镜像由于众所周知的网络问题,经常会失败。

解决思路

解决这种问题的一个办法是,将镜像复制一份到自己的仓库中,如 dockerhub 就为个人用户提供了免费的镜像仓库。

当然镜像并没有简单的复制功能。常规思路是,先在畅通的网络环境下(如搭建了代理的本地环境),执行

docker pull gcr.io/xxx
# 改名为 docker.io 的用户名下的镜像
docker tag gcr.io/xxx username/xxx
# 推送到远端镜像仓库
docker push username/xxx

通过 Github 自动构建

其实 dockerhub 支持联动 Github,通过指定 Github 上的 dockerfile 来自动构建镜像,省去了对代理网络环境的需要,可以使流程更简化。

建立 Github 仓库

首先建立一个 Github 仓库,用于存放 dockerfile,名字随意,如 "gcr-image"。然后直接在 Github 网页上 Create new file,内容只有一行,即直接引用目标镜像。

FROM gcr.io/xxx

这个仓库可以存放多个 dockerfile,构建时按名字区分即可。

新建 Repository

接下来在 hub.docker.com 上点击 Create Repository(没有账户的先注册账户),然后在 Build Settings 中点击 Github 图标,关联 Github 账户:

选定自己的 Github Repository,然后在 BUILD RULES 中填写镜像相关信息。根据需要修改 Dockerfile location 为 Github 中对应 dockerfile 文件。建议修改 Docker Tag 与 gcr.io 中目标镜像同步。
最后 Create & Build 就好了,需要等待 dockerhub 构建一会儿。

使用

构建完毕后,使用时将配置文件中 gcr.io 镜像改为 dockerhub 上的镜像就可以了。dockerhub 上个人镜像一般是 docker.io/yourusername/xxx 的形式。同时,每次对 Github Repository 的变更,都会触发 dockerhub 自动构建镜像,在变更镜像版本的时候尤为方便。

转:https://juejin.im/post/5c6cf7d5e51d45365f3f830e



推荐阅读
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 线段树详解与实现
    本文详细介绍了线段树的基本概念及其在编程竞赛中的应用,并提供了一个具体的线段树实现代码示例。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • GLiHT数据介绍
    GLiHT数据介绍 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
author-avatar
C_z和
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有