ubuntu 20.04gitlab-runner docker方式安装使用

需求: 新增一个办公室的runner来跑CI,本次机器为全新机器无基础环境,详细操作步骤如下:

# 新建gitlab-runner用户
vim  add_gitlab-runner_user.sh
apt-get install vim
# 安装docker
apt-get update
# 安装 apt 依赖包,用于通过HTTPS来获取仓库:
apt-get install     apt-transport-https     ca-certificates     curl     gnupg-agent     software-properties-common
# 添加 Docker 的官方 GPG 密钥:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | 
<think>好的,我现在需要帮助用户解决他们遇到的GitLab Runner问题。用户之前已经遇到过一个关于镜像拉取失败的错误,现在他们提到GitLab Runner是通过Helm安装的,Pod里没有Docker,但挂载了主机的/var/run/docker.sock。我需要分析这种情况下的可能问题,并提供解决方案。 首先,用户使用Helm安装GitLab Runner,说明他们可能在Kubernetes环境中运行。Pod里没有Docker,但挂载了Docker的socket,这通常意味着用户希望使用Docker out of Docker(DooD)模式,即在容器内使用宿主机的Docker守护进程。这种情况下,容器内的Docker客户端通过挂载的socket与宿主机通信,执行Docker命令。 接下来,用户遇到的错误可能和之前的镜像拉取问题有关,但当前的问题可能涉及到权限或配置问题。因为虽然挂载了socket,但如果没有正确配置,可能会导致权限不足或其他问题。 我需要考虑几个方面: 1. **挂载的Docker socket权限问题**:宿主机上的/var/run/docker.sock通常属于docker组,用户需要确保运行GitLab Runner的容器有权限访问这个socket。如果容器内的用户不在docker组中,或者宿主机的socket权限设置过严,可能导致无法访问。 2. **GitLab Runner的配置**:在Helm chart中,用户可能需要设置特定的values来正确挂载socket,并配置Runner使用Docker执行器。需要检查values.yaml中的相关配置,比如volumes、volumeMounts,以及执行器的设置。 3. **Docker In Docker (DinD) 与 DooD的区别**:用户可能混淆了这两种模式。DinD是在容器内运行独立的Docker守护进程,而DooD是使用宿主机的Docker。用户现在的情况是DooD,需要注意配置是否正确。 4. **安全风险提示**:挂载宿主机的Docker socket会有安全风险,因为容器内的进程可以获得宿主机的Docker控制权。需要提醒用户注意这一点,并建议考虑更安全的方法,比如使用Kaniko或Buildah进行无特权的镜像构建。 5. **错误排查步骤**:用户需要手动进入Pod,检查socket是否成功挂载,测试Docker命令是否可用,查看日志等。 现在需要将这些问题整理成结构化的回答,分步骤说明解决方案,确保用户能够逐步排查和解决问题。同时,要保持回答的清晰和易懂,避免使用过多技术术语,但必要时需准确说明。 最后,检查是否覆盖所有可能的问题点,并给出实际的操作命令,方便用户执行。另外,需要确保提到的安全建议,帮助用户权衡利弊,选择更适合的解决方案。</think>--- ### **问题分析** 当 GitLab Runner 通过 Helm 部署在 Kubernetes 中,且未在 Pod 内安装 Docker 但挂载了主机的 `/var/run/docker.sock` 时,你正在使用 **Docker-out-of-Docker (DooD)** 模式。这种模式允许容器内的进程通过宿主机 Docker 守护进程执行构建任务。以下是关键问题和解决方案: --- ### **1. 核心问题** - **Pod 内缺少 Docker 客户端**:即使挂载了 Docker Socket(`/var/run/docker.sock`),若容器内未安装 `docker` 命令行工具,GitLab Runner 无法执行 `docker build` 等操作。 - **权限问题**:容器内用户可能无权访问挂载的 Docker Socket。 - **配置错误**:Helm Chart 的配置可能未正确挂载 Socket 或指定执行器。 --- ### **2. 解决方案** #### **(1) 安装 Docker 客户端** 在容器内安装 `docker` 命令行工具,使 GitLab Runner 可以调用宿主机 Docker。 修改 Helm Chart 的 `values.yaml`,在 Runner 容器中安装 Docker: ```yaml runners: image: ubuntu:20.04 # 使用包含包管理器的镜像 tags: "k8s-dood" privileged: false # 在容器启动时安装 Docker 客户端 initContainerScript: | apt-get update && apt-get install -y docker.io # 挂载宿主机 Docker Socket volumes: - "/var/run/docker.sock:/var/run/docker.sock" ``` #### **(2) 验证权限** 确保容器内用户(默认 `gitlab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值