您的位置:

Docker Buildx的使用及其推送到Harbor

一、概述

Docker Buildx 是 Docker 官方提供的、基于 CLI 的工具,可以用于对 Docker 镜像进行构建、打包、图层管理等操作,同时提供了更快的构建速度和更强的跨平台构建能力。

Docker Buildx 构建镜像的过程中,可以选择将构建出来的镜像推送到不同的镜像仓库或者其他存储介质,比如推送到 Harbor 仓库。

二、安装 Docker Buildx

通过以下命令检查 Docker 是否已经安装:

``` docker version ```

如果已经安装,请使用以下命令启用 Docker Buildx:

``` export DOCKER_BUILDKIT=1 ```

Docker Buildx 可以通过下载二进制文件或者通过 Docker 安装

三、使用 Docker Buildx 构建镜像

使用 Docker Buildx 构建镜像的命令如下:

``` docker buildx build -t <镜像名称> --platform=<平台> <上下文路径> ```

其中,-t 指定镜像名称,--platform 指定构建的目标平台,上下文路径指定 Dockerfile 所在的上下文路径。例如:

``` docker buildx build -t myimage --platform=linux/amd64,linux/arm64,linux/arm/v7 . ```

上述命令将使用 Dockerfile 构建名为 myimage 的镜像,同时支持 Linux 下的 x86_64、arm64 和 armv7 架构。

四、构建并推送到 Harbor 仓库

Harbor 是一个企业级镜像仓库,支持 Docker 镜像、Helm Chart、Helm Repository 和 OCI 镜像格式,提供了镜像扫描、多仓库管理、安全审计、镜像复制和自动化 CI/CD 等功能。

构建出来的 Docker 镜像可以直接推送到 Harbor 仓库,这里将演示如何将构建好的 myimage 镜像推送到 Harbor 中。

1. 首先需要登录 Harbor 仓库。执行以下命令: ``` docker login -u <用户名> -p <密码> ``` 2. 在 Harbor 界面中,创建一个新的项目(例如 myproject)。 3. 在工作目录下创建一个特殊的文件 .dockerignore,用来忽略不想被传输到 Docker 守护进程中的文件和目录。 例如,可以忽略 node_modules 目录,以加速构建和传输过程: ``` node_modules/ ``` 4. 在相应的工作目录下创建 Dockerfile。例如,下面是一个示例 Dockerfile: ``` FROM node:latest LABEL maintainer="xxx@xxx.com" WORKDIR /app COPY . /app RUN npm install EXPOSE 3000 CMD ["npm", "run", "start"] ``` 5. 使用 Buildx 构建出 Docker 镜像: ``` docker buildx build -t / /<镜像名称>:<镜像版本> --platform=<平台> --push . ``` 6. 构建成功后,可以在 Harbor 的对应项目中查看到该镜像。

五、总结

本文以 Docker Buildx 为例,介绍了如何构建 Docker 镜像并将其推送到 Harbor 仓库中。本篇文章涵盖了 Docker Buildx 的基本概念、安装方法、使用方法以及如何推送到 Harbor 仓库。读者可以根据自己的实际需求和场景,使用 Docker Buildx 来更好地管理和推送 Docker 镜像。