当前位置: 首页 > news >正文

Azure DevOps — Kubernetes 上的自托管代理 — 第 4 部分

在本篇博文中,我们将深入探讨 Docker in Docker (DinD) 的强大功能。这项技术使我们能够在 Docker 容器中运行 Docker 命令,为容器化工作流开辟了无限可能。

本系列文章将探讨如何让 Docker 与 Azure DevOps 无缝协作!在本篇博文中,我们将探索一个名为 Docker in Docker (DinD) 的酷炫技巧。它就像在容器中嵌套容器,对于任何使用 Kubernetes 的人来说,它都将带来颠覆性的改变。

我们将指导您创建 Docker in Docker 镜像并在 Kubernetes Pod 中运行它们。我们将把所有内容连接到 Azure DevOps,让您轻松运行 Docker 任务。

准备好简化您的 Kubernetes 工作流程,并使用 Docker 和 Azure DevOps 将 DevOps 提升到新的水平。让我们开始吧!

目录

  1. 了解 Docker in Docker
  2. 设置 Docker in Docker 镜像
  3. 在 Kubernetes 中部署 Docker in Docker (DinD) 镜像
  4. 在 DinD 自托管代理上运行 Docker 命令
  5. Docker in Docker (DinD) 对 Azure DevOps 的优势

了解 Docker in Docker


顾名思义,Docker in Docker 使我们能够将 Docker 容器嵌套在一起。此功能在需要在隔离环境中构建、测试或部署 Docker 化应用程序的场景中尤为有用。

设置 Docker in Docker 镜像


首先,我们将创建一个 Docker in Docker 镜像。该镜像允许我们在容器内无缝执行 Docker 命令。通过封装 Docker 运行时环境,我们可以确保跨不同平台的一致性和可移植性。

让我们构建一个 Docker in Docker (DinD) 镜像:

在你的 Docker 环境中创建包含以下内容的 Dockerfile

#
# Ubuntu Bionic + Docker
#
# Instructions for docker installation taken from:
# https://docs.docker.com/install/linux/docker-ce/ubuntu/
#FROM ubuntu:bionic# Docker install
RUN apt-get update && apt-get install --no-install-recommends -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88RUN add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
RUN apt-get update && apt-get install --no-install-recommends -y docker-ce docker-ce-cli containerd.ioRUN apt update -y && apt upgrade -y && apt install curl git jq libicu60 -y# Also can be "linux-arm", "linux-arm64".
ENV TARGETARCH="linux-x64"WORKDIR /azp/COPY ./start.sh ./
RUN chmod +x ./start.shENV AGENT_ALLOW_RUNASROOT="true"# # Set start.sh script as ENTRYPOINT.
ENTRYPOINT ["/azp/start.sh"]

在同一路径下创建一个start.sh脚本,内容如下(该脚本将帮助我们启动容器内的docker并连接到Azure DevOps代理池)

#!/bin/bash
set -eprint_header() {lightcyan="\033[1;36m"nocolor="\033[0m"echo -e "\n${lightcyan}$1${nocolor}\n"
}print_header "Starting the Docker Process..."
dockerd > /var/log/dockerd.log 2>&1 &if [ -z "${AZP_URL}" ]; thenecho 1>&2 "error: missing AZP_URL environment variable"exit 1
fiif [ -z "${AZP_TOKEN_FILE}" ]; thenif [ -z "${AZP_TOKEN}" ]; thenecho 1>&2 "error: missing AZP_TOKEN environment variable"exit 1fiAZP_TOKEN_FILE="/azp/.token"echo -n "${AZP_TOKEN}" > "${AZP_TOKEN_FILE}"
fiunset AZP_TOKENif [ -n "${AZP_WORK}" ]; thenmkdir -p "${AZP_WORK}"
ficleanup() {trap "" EXITif [ -e ./config.sh ]; thenprint_header "Cleanup. Removing Azure Pipelines agent..."# If the agent has some running jobs, the configuration removal process will fail.# So, give it some time to finish the job.while true; do./config.sh remove --unattended --auth "PAT" --token $(cat "${AZP_TOKEN_FILE}") && breakecho "Retrying in 30 seconds..."
http://www.lryc.cn/news/609101.html

相关文章:

  • Docker环境离线安卓安装指南
  • centos9 安装docker engine
  • C++ : 反向迭代器的模拟实现
  • Java基本技术讲解
  • 深入解析C++函数重载:从原理到实践
  • 【1】WPF界面开发入门—— 图书馆程序:登录界面设计
  • K8S部署ELK(五):集成Kibana实现日志可视化
  • B+树索引结构原理解析与最佳实践
  • 创建型设计模式:对象诞生的艺术与智慧
  • 设计模式学习[17]---组合模式
  • 控制建模matlab练习06:比例积分控制-②PI控制器
  • 【stm32】按键控制LED以及光敏传感器控制蜂鸣器
  • STM32-驱动OLED显示屏使用SPI(软件模拟时序)实现
  • Spring Boot 的事务注解 @Transactional 失效的几种情况
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-55,(知识点:STM32,外设及其特点)
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第四天(DOM编程和AJAX异步交互)
  • 08【C++ 初阶】类和对象(下篇) --- 类知识的额外补充
  • MySQL 事务原理 + ACID笔记
  • 计算机网络(TCP篇)
  • Python3 中使用zipfile进行文件(夹)的压缩、解压缩
  • Qt-vs加载exe图标
  • 【机器人】VLN-R1 微调 | 增强训练 | 连续导航
  • 江协科技STM32 14-1 WDG看门狗
  • 一键安装RabbitMQ脚本
  • 数据结构(概念及链表)
  • 【数据分享】各省粮食外贸依存度、粮食波动率等粮食相关数据合集(2011-2022)(获取方式看文末)
  • 达梦数据库备份与还原终极指南:从基础到增量策略实战
  • 【2025/08/03】GitHub 今日热门项目
  • Spring 核心之 Bean 管理:配置、作用域与生命周期详解
  • 计算机核心概念辨析与解析