synchronization

This commit is contained in:
2025-08-25 17:53:08 +08:00
commit c201eb5ef9
318 changed files with 23092 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
FROM --platform=$TARGETPLATFORM alpine
RUN echo "Startup success" > /os.txt
CMD tail -f /os.txt

View File

@@ -0,0 +1,138 @@
> 本文作者:丁辉
# BUILDX构建镜像
## 安装
1. 克隆代码
```bash
git clone https://gitee.com/offends/Kubernetes.git
cd Kubernetes/Docker/Builder/Buildx
```
2. 安装
```bash
./install.sh
```
## 手动构建
1. 编写 Dockerfile
```dockerfile
# vi Dockerfile
FROM --platform=$TARGETPLATFORM alpine
RUN echo "Startup success" > /os.txt
CMD tail -f /os.txt
```
2. 创建了一个名为 "buildx" 的构建器
```bash
docker buildx create --use --name=buildx --driver docker-container --driver-opt image=moby/buildkit:buildx-stable-1
```
**参数解释**
| 参数 | 说明 |
| ------------------------------ | ------------------------------------------------------------ |
| `--use` | 将新构建器设置为当前活动的构建器(默认构建器) |
| `--name=buildx` | 指定新构建器的名称为 "buildx" |
| `--driver docker` | 指定使用的驱动程序为 "docker" |
| `--driver-opt image=...` | 指定驱动程序选项,此处是指定 BuildKit 镜像的位置为 "moby/buildkit:buildx-stable-1" |
| `--config /etc/buildkitd.toml` | 指定配置文件 |
3. 构建多架构镜像并推送镜像仓库
**示例**
> 举例仓库地址为 "offends"
- 第一种方式(简单)
```bash
docker buildx build --platform linux/amd64,linux/arm/v7 -t offends/app:v1 . --push
```
- 第二种方式
```bash
docker buildx build --platform linux/amd64,linux/arm/v7 -t offends/app:v1 --output type=registry,dest=offends .
```
> 查看 buildx 当前可构建架构
>
> ```bash
> docker buildx ls
> ```
**参数解释**
| 参数 | 解释 |
| -------------------------------------------- | ------------------------------------------------------------ |
| `docker buildx build` | 执行 Buildx 构建的命令 |
| `--platform linux/amd64,linux/arm/v6` | 指定要构建的目标平台,这里包括 Linux AMD64 和 ARMv6 |
| `-t app:v1` | 为构建的镜像设置标签为 "app:v1" |
| `-f ./Dockerfile` | 指定要使用的 Dockerfile 文件路径 |
| `.` | 构建上下文的路径,表示当前目录是构建上下文,其中包含了构建镜像所需的文件和指令 |
| `--output type=local,dest=.docker` | 指定输出类型为本地,并将构建结果输出到名为 `.docker` 的目录中 |
| `--output type=oci,dest=<path>` | 将构建结果输出为 OCI 格式的镜像包,并保存到指定路径 |
| `--output type=docker,dest=<path>` | 将构建结果输出为 Docker 格式的镜像包,并保存到指定路径 |
| `--output type=image,name=<image_name>` | 将构建的镜像推送到指定的镜像仓库,指定镜像名称 |
| `--output type=registry,dest=<registry_url>` | 将构建的镜像推送到指定的镜像仓库地址 |
| `--push` | 将构建的镜像推送到指定的镜像仓库 |
### 常用命令
- 删除构建器
```bash
docker buildx rm <构建器名称>
```
- 设置默认构建器
```bash
docker buildx use <构建器名称>
```
- 检查 Docker Buildx 构建器的详细信息
```bash
docker buildx inspect
```
# 使用脚本构建镜像并推送仓库
> 前提条件:
>
> 1. 已安装 Buildx, 安装脚本: [BUILDX安装](https://gitee.com/offends/Kubernetes/tree/main/Docker/Builder/Buildx/README.md)
>
> 2. 登录一个可推送镜像的仓库
>
> ```bash
> docker login <仓库地址> -u <用户名> -p<密码>
> ```
>
> 3. 根据自己需求添加架构
>
> 4. 配置变量
```bash
export PLATFORM="linux/amd64,linux/arm/v6"
# 这里的仓库地址需要是一个可推送的镜像仓库才行,否则将推送失败
export IMAGE_NAME=<仓库地址>/<镜像名>
export IMAGE_TAG=<镜像标签>
```
开始构建
```bash
./build.sh
```

View File

@@ -0,0 +1,37 @@
#!/bin/bash
#############################################################################################
# 用途: 构建 Dockerfile 脚本
# 作者: 丁辉
# 编写时间: 2023-11-27
#############################################################################################
# 加载检测脚本
source <(curl -sS https://gitee.com/offends/Linux/raw/main/File/Shell/Check_command.sh)
# 创建 buildx
function CREATE_BUILDX(){
# 国内镜像
# --driver-opt dockerpracticesig/buildkit:master
# --driver-opt dockerpracticesig/buildkit:master-tencent
CHECK_COMMAND_NULL docker buildx create --use --name=buildx --driver docker-container --driver-opt image=moby/buildkit:buildx-stable-1
CHECK_COMMAND_TRUE "创建 buildx 成功" "创建 buildx 失败,请根据错误信息检查"
}
# 开始构建镜像
function BUILD_IMAGE(){
# 构建镜像
CHECK_COMMAND_NULL docker buildx build --platform ${PLATFORM} -t ${IMAGE_NAME}:${IMAGE_TAG} . --push
CHECK_COMMAND_TRUE "构建镜像成功" "构建镜像失败,请根据错误信息检查"
NULL_TRUE docker buildx rm buildx
GREEN_PRINTF "构建镜像完成,查看镜像架构信息: \n$(docker buildx imagetools inspect ${IMAGE_NAME}:${IMAGE_TAG} | grep Platform: | grep -v unknown/unknown | awk -F " " '{print $2}')"
}
function ALL(){
# 检测是否安装 Docker
CHECK_SYSTEMD docker
CREATE_BUILDX
BUILD_IMAGE
}
ALL

View File

@@ -0,0 +1,60 @@
#!/bin/bash
#############################################################################################
# 用途: 安装 Buildx 脚本
# 作者: 丁辉
# 编写时间: 2023-11-27
#############################################################################################
# 加载检测脚本
source <(curl -sS https://gitee.com/offends/Linux/raw/main/File/Shell/Check_command.sh)
function CHECK(){
# 官方下载仓库: https://github.com/docker/buildx/releases
VERSION="v0.12.0"
DIR="/root/.docker/cli-plugins"
URL="https://github.com/docker/buildx/releases/download/$VERSION/buildx-$VERSION.linux-$ARCH_TYPE_2"
BIN_NAME="Buildx"
CHECK_BIN "$DIR/docker-buildx"
}
# 引用 check_bin 变量不存在则安装
function CHECK_BIN_INSTALL(){
if [ "$INSTALL_BIN" = false ]; then
CHECK_INSTALL wget
SEND_INFO "正在安装 $BIN_NAME,请稍后"
CHECK_DIR "$DIR"
CHECK_COMMAND_NULL wget $URL
CHECK_COMMAND_NULL mv buildx-v*.linux-amd64 ~/.docker/cli-plugins/docker-buildx
CHECK_COMMAND_NULL chmod +x ~/.docker/cli-plugins/docker-buildx
SEND_INFO "Buildx 版本: $(docker buildx version | awk '{print $2}')"
else
SEND_INFO "$BIN_NAME 已安装"
SEND_INFO "Buildx 版本: $(docker buildx version | awk '{print $2}')"
fi
}
# function CHECK_BIN_INSTALL_MAN(){
# export DOCKER_BUILDKIT=1
# docker build --platform=local -o . git://github.com/docker/buildx
# }
# 添加模拟架构
function RUN_BINFMT(){
SEND_INFO "正在添加模拟架构"
CHECK_COMMAND_NULL docker run --privileged --rm tonistiigi/binfmt --install all
SEND_INFO "添加模拟架构完成,查看架构信息: docker buildx ls"
}
function ALL(){
CHECK_SYSTEMD docker
CHECK_CPU
CHECK
CHECK_BIN_INSTALL
CHECK_CORE
RUN_BINFMT
}
ALL