将本地构建的镜像推送到远程镜像库,构建多种系统架构支持的Docker镜像并推送到Docker Hub

目录

    • 推送到 Docker Hub
      • 前提:需要在 [Docker Hub](https://hub.docker.com/) 创建账户、创建仓库。
      • 1. 创建 Dockerfile 和构建镜像:`docker build -t`
      • 2. 登录到远程镜像库:`docker login`
      • 3. 将镜像标记为远程仓库地址:`docker tag`
      • 4. 推送镜像到远程仓库: `docker push`
      • 5. 拉取远程镜像:`docker pull`
    • 推送到 GitHub Package Registry 注册表(可关联GitHub仓库)
      • 前提:需要在GitHub创建个人访问令牌
      • 1. 创建 Dockerfile 和构建镜像: `docker build -t `
      • 2. 登录到远程镜像库:`docker login ghcr.io`
      • 3. 将镜像标记为远程仓库地址: `docker tag`
      • 4. 推送镜像到远程仓库: `docker push`
      • 5. 拉取远程镜像: `docker pull`
    • 构建多种系统架构支持的Docker镜像,推送到Docker Hub
      • 1. 编写支持多种系统架构的dockerfile文件
      • 2. 构建及推送命令:`docker buildx build -t`

推送到 Docker Hub

前提:需要在 Docker Hub 创建账户、创建仓库。

1. 创建 Dockerfile 和构建镜像:docker build -t

在本地项目目录中创建一个 Dockerfile,定义您的容器镜像配置。然后使用以下命令构建镜像:

 docker build -t your-image-name:tag .

将 your-image-name 替换为您的镜像名称,tag 替换为镜像标签。

2. 登录到远程镜像库:docker login

登录到您的远程镜像库

 docker login

3. 将镜像标记为远程仓库地址:docker tag

使用以下命令将本地构建的镜像标记为远程仓库地址:

docker tag your-image-name:tag your-docker-hub-username/your-repo-name:tag

4. 推送镜像到远程仓库: docker push

使用以下命令将标记后的镜像推送到远程仓库:

 docker push your-docker-hub-username/your-repo-name:tag

5. 拉取远程镜像:docker pull

docker pull your-username/your-image-name:tag

推送到 GitHub Package Registry 注册表(可关联GitHub仓库)

前提:需要在GitHub创建个人访问令牌

  • 在GitHub创建个人访问令牌:参考官方文档
  • 建议将令牌保存为环境变量
    $ vim ~/.zshr
    export CR_PAT=YOUR_TOKEN
    $ source ~/.zshrc
    

1. 创建 Dockerfile 和构建镜像: docker build -t

在本地项目目录中创建一个 Dockerfile,定义您的容器镜像配置。然后使用以下命令构建镜像:

docker build -t your-image-name:tag .

将 your-image-name 替换为您的镜像名称,tag 替换为镜像标签。

2. 登录到远程镜像库:docker login ghcr.io

登录到您的远程镜像库

docker login ghcr.io

或者使用环境变量中的令牌

 $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin> Login Succeeded

3. 将镜像标记为远程仓库地址: docker tag

使用以下命令将本地构建的镜像标记为远程仓库地址:
替换 your-username 和 your-image-name 为您的 GitHub 用户名和镜像名称。

docker tag your-image-name:tag ghcr.io/your-username/your-image-name:tag#举例
docker tag xapi-backend-image:1.0.0 ghcr.io/xiaoxiongmao5/xapi-backend:1.0.0

4. 推送镜像到远程仓库: docker push

使用以下命令将标记后的镜像推送到远程仓库:

docker push ghcr.io/your-username/your-image-name:tag#举例
docker push ghcr.io/xiaoxiongmao5/xapi-backend:1.0.0

5. 拉取远程镜像: docker pull

 docker pull ghcr.io/your-username/your-image-name:tag

构建多种系统架构支持的Docker镜像,推送到Docker Hub

1. 编写支持多种系统架构的dockerfile文件

# syntax=docker/dockerfile:1.2FROM golang:1.20.8-alpine AS x86_64_builder# 设置工作目录
WORKDIR /appCOPY . .RUN go build -o funclist main.go# 使用 Alpine Linux 作为最终的基础镜像,这是一个轻量级的Linux发行版,通常用于构建小型Docker容器
FROM alpine:latest AS x86_64_final# 安装 GLIBC 和其他运行时库
RUN apk --no-cache add ca-certificates libc6-compatWORKDIR /appCOPY --from=x86_64_builder /app/funclist .EXPOSE 8000CMD ["./funclist"]FROM golang:1.20.8-alpine AS arm64v8_builderWORKDIR /appCOPY . .RUN go build -o funclist main.goFROM alpine:latest AS arm64v8_finalRUN apk --no-cache add ca-certificates libc6-compatWORKDIR /appCOPY --from=arm64v8_builder /app/funclist .EXPOSE 8000CMD ["./funclist"]

2. 构建及推送命令:docker buildx build -t

docker buildx build -t your-docker-hub-username/your-repo-name:tag --platform linux/amd64,linux/arm64 . --push
#举例
docker buildx build -t xiaoxiongmao5/funclist:1.0.1 --platform linux/amd64,linux/arm64 . --push

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu-server 22.04LTS源码编译apache服务器

1 系统环境 # cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.3 LTS" NAME"Ubuntu" VERSION_ID"22.04" VERSION"22.04.3 LTS (Jammy Jellyfish)" VERSION_CODENAMEjammy IDubuntu ID_LIKEdebian HOME_URL"https://www.ubuntu.co…

Hadoop-Hbase

1. Hbase安装 1.1 安装zookeeper、 hbase 解压至/opt/soft,并分别改名 配置环境变量并source生效 #ZK export ZOOKEEPER_HOME/opt/soft/zk345 export PATH$ZOOKEEPER_HOME/bin:$PATH #HBASE_HOME export HBASE_HOME/opt/soft/hbase235 export PATH$HBASE_HOME/b…

浅显易懂理解傅里叶变换

说起电子硬件专业,那不得不提的就是傅里叶变换了。 大学课程中应该吓倒了很多人,谈傅里叶色变了。 本次就来重新认识一下电子硬件中的傅里叶变化。 首先理解之前,当然是需要先知道傅里叶这位大牛的人物百科啦。 傅里叶是法国数学家&#xff0…

【集成学习】对已训练好的模型进行投票

在不同的数据预处理情况下训练得到了三个SVM模型,结果都差不多,对这三个模型的分类结果进行投票 1、三个模型的model_path # 最终model的path self.model_path log_path/model_name_model.gz self.time_log log_path/model_name_time_log.csv# 模型1…

无涯教程-JavaScript - EXP函数

描述 EXP函数返回e升至数字的幂。常数e等于自然对数的底数2.71828182845904。 语法 EXP (number)争论 Argument描述Required/OptionalNumberThe exponent applied to the base e.Required Notes 要计算其他碱基的幂,请使用幂运算符(^) EXP是LN的倒数,LN是数字的自然对数…

【面试刷题】——TCP三次握手,以及为什么要三次握手

TCP(传输控制协议)的三次握手是建立TCP连接的过程,它确保了通信双方的正常启动和参数协商。三次握手的过程如下: 客户端发送请求: 客户端首先向服务器发送一个特殊的TCP报文,称为SYN(同步&…

C#根据中文首字母排序

第一种方式&#xff1a; 这种方式会受制于服务器的区域和语言设置。 1.首先添加一个排序类ChineseNameComparer public class ChineseNameComparer : IComparer<string> {public int Compare(string x, string y){if (x null || y null)return 0;var xFirstChar x.Su…

免费:CAD批量转PDF工具,附下载地址

分享一款CAD 批量转PDF、打印的工具插件。能自动识别图框大小、自动识别比例、自动编号命名。重点&#xff01;重点&#xff01;重点&#xff01;自动将CAD的多张图纸一次性地、批量地转为PDF&#xff0c;或者打印。效果看下图&#xff1a; 适用环境&#xff1a; 32位系统 Auto…

5-2 Pytorch中的模型层layers

深度学习模型一般由各种模型层组合而成。 torch.nn中内置了非常丰富的各种模型层。它们都属于nn.Module的子类&#xff0c;具备参数管理功能。 例如&#xff1a; nn.Linear, nn.Flatten, nn.Dropout, nn.BatchNorm2d, nn.Embedding nn.Conv2d,nn.AvgPool2d,nn.Conv1d,nn.ConvTr…

layui框架学习(45: 工具集模块)

layui的工具集模块util支持固定条、倒计时等组件&#xff0c;同时提供辅助函数处理时间数据、字符转义、批量事件处理等操作。   util模块中的fixbar函数支持设置固定条&#xff08;2.7版本的帮助文档中叫固定块&#xff09;&#xff0c;是指固定在页面一侧的工具条元素&…

小程序引入vant-Weapp保姆级教程及安装过程的问题解决

小知识&#xff0c;大挑战&#xff01;本文正在参与“程序员必备小知识”创作活动。 本文同时参与 「掘力星计划」&#xff0c;赢取创作大礼包&#xff0c;挑战创作激励金 当你想在小程序里引入vant时&#xff0c;第一步&#xff1a;打开官方文档&#xff0c;第二步&#xff…

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…

elasticsearch5-RestAPI操作

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

typeScript 类型推论

什么是类型推论&#xff1f; 类型推论是 TypeScript 中的一个特性&#xff0c;它允许开发人员不必显式地指定变量的类型。相反&#xff0c;开发人员可以根据变量的使用情况让 TypeScript 编译器自动推断出类型。例如&#xff0c;如果开发人员将一个字符串赋值给一个变量&#…

【大数据】Neo4j 图数据库使用详解

目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 3.3 Neo4j的构建元素 3.3.1 节点 3.3.2 属性 3.3.3 关系 3.3.4 标…

智囊AI-基于 ChatGPT 的 AI 工具产品 你的私人AI助手

智囊AI是一款基于 ChatGPT 的 AI 工具产品&#xff0c;主打免费、智能、方便&#xff0c;可以在此雇佣各种各样的免费智囊进行对话、自己创造和分享智囊、共享有趣有用的对话等。不过使用需要注册登录&#xff0c;可以使用自己的openai key或者使用网站提供的api key&#xff0…

常见的API

常见的 API Math 从 JDK 版本 1 开始的, 用来计算的一些方法 这里面定义了两个常量的 PI 和 E 这两个是最接近 pi 的值和最接近对数的值 Abs (int a ) 取绝对值Ceil (double a)向上取整Floor (double a )向下取整Round (float a)四舍五入Max (int a, int b) 取最大值Pow (dou…

题解:ABC320C - Slot Strategy 2 (Easy)

题解&#xff1a;ABC320C - Slot Strategy 2 (Easy) 题目 链接&#xff1a;Atcoder。 链接&#xff1a;洛谷。 难度 算法难度&#xff1a;C。 思维难度&#xff1a;C。 调码难度&#xff1a;B。 综合评价&#xff1a;普及-。 算法 枚举模拟。 思路 先遍历最后每个转…

tcp_v4_connect函数的解析

源码&#xff1a; int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) {// 解析输入的地址结构struct sockaddr_in *usin (struct sockaddr_in *)uaddr;// 获取 TCP 协议栈的全局 death_row 对象struct inet_timewait_death_row *tcp_death_row;// …

C- ssize_t size_t

size_t 和 ssize_t 都是在 C 和 C 的标准库中定义的数据类型&#xff0c;它们通常用于表示大小和长度。然而&#xff0c;它们有关键的区别。 size_t: 定义&#xff1a;size_t 是一个无符号整数类型&#xff0c;它是适合表示对象的大小的类型。在 POSIX 中&#xff0c;它也用于…