目录
-
- [推送到 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