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

推送到 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.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

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Docker镜像推送远程,你可以按照以下步骤进行操作: 1. 首先,确保你已经构建了要推送Docker镜像。你可以使用Dockerfile来构建镜像,使用命令`docker build -t dockerId/镜像名:标签 .`,其中dockerId是你的Docker账号,镜像名是你给镜像起的名字,标签是你给镜像打的标签。例如,`docker build -t docker2021ne/jdk1.8:0713 .`\[2\] 2. 登录到Docker账号,使用命令`docker login`,并输入你的Docker账号和密码\[2\] 3. 推送镜像远程,使用命令`docker push dockerId/镜像名:标签`,其中dockerId是你的Docker账号,镜像名是你给镜像起的名字,标签是你给镜像打的标签。例如,`docker push docker2021ne/jdk1.8:0713`\[1\] 4. 等待推送完成,你的镜像就会被上传到远程中了\[1\] 如果你想下载远程中的镜像,可以使用命令`docker pull dockerId/镜像名:标签`,其中dockerId是镜像所属的Docker账号,镜像名是镜像的名字,标签是镜像的标签。例如,`docker pull docker2021ne/jdk1.8:0713`\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [Docker push命令使用 Docker镜像推送远程 Docker镜像推送Dockerhub](https://blog.csdn.net/HaHa_Sir/article/details/119412754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值