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

目录

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

推送到 Docker Hub

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

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

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

bash 复制代码
 docker build -t your-image-name:tag .

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

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

登录到您的远程镜像库

bash 复制代码
 docker login

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

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

bash 复制代码
docker tag your-image-name:tag your-docker-hub-username/your-repo-name:tag

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

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

bash 复制代码
 docker push your-docker-hub-username/your-repo-name:tag

5. 拉取远程镜像:docker pull

bash 复制代码
docker pull your-username/your-image-name:tag

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

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

  • 在GitHub创建个人访问令牌:参考官方文档

  • 建议将令牌保存为环境变量

    bash 复制代码
    $ vim ~/.zshr
    export CR_PAT=YOUR_TOKEN
    $ source ~/.zshrc

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

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

bash 复制代码
docker build -t your-image-name:tag .

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

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

登录到您的远程镜像库

bash 复制代码
docker login ghcr.io

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

bash 复制代码
 $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
 > Login Succeeded

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

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

替换 your-username 和 your-image-name 为您的 GitHub 用户名和镜像名称。

bash 复制代码
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

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

bash 复制代码
docker push ghcr.io/your-username/your-image-name:tag

#举例
docker push ghcr.io/xiaoxiongmao5/xapi-backend:1.0.0

5. 拉取远程镜像: docker pull

bash 复制代码
 docker pull ghcr.io/your-username/your-image-name:tag

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

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

shell 复制代码
# syntax=docker/dockerfile:1.2

FROM golang:1.20.8-alpine AS x86_64_builder

# 设置工作目录
WORKDIR /app

COPY . .

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-compat

WORKDIR /app

COPY --from=x86_64_builder /app/funclist .

EXPOSE 8000

CMD ["./funclist"]

FROM golang:1.20.8-alpine AS arm64v8_builder

WORKDIR /app

COPY . .

RUN go build -o funclist main.go

FROM alpine:latest AS arm64v8_final

RUN apk --no-cache add ca-certificates libc6-compat

WORKDIR /app

COPY --from=arm64v8_builder /app/funclist .

EXPOSE 8000

CMD ["./funclist"]

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

bash 复制代码
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
相关推荐
汀、人工智能20 分钟前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
吃面不喝汤6644 分钟前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
Rookie_explorers1 小时前
Linux下go环境安装、环境配置并执行第一个go程序
linux·运维·golang
学习向前冲1 小时前
AD域控服务器
运维·服务器
Leighteen1 小时前
Docker常用命令
docker·容器
hgdlip1 小时前
查看ip地址的方法有几种?探索多样方法
运维·服务器·ip地址
丶21361 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
codelife3212 小时前
在Docker容器中执行命令
容器
神即道 道法自然 如来2 小时前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
petaexpress2 小时前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes