Jenkins容器内执行docker命令报错:docker: not found 求助
解决Jenkins容器内执行
docker compose up提示docker: not found的问题 问题根源
你的Jenkins容器系统内没有安装Docker客户端。虽然你挂载了/var/run/docker.sock让容器能访问宿主机的Docker守护进程,但执行docker命令需要容器内存在对应的客户端二进制程序——Jenkins的Docker插件是用于Jenkins集成管理的工具,无法替代系统级的Docker客户端。
方案一:修改docker-compose.yml,复用宿主机Docker客户端
直接将宿主机的Docker客户端文件挂载到Jenkins容器内,无需在容器内单独安装:
version: '3' services: jenkins: image: jenkins/jenkins:lts restart: always privileged: true user: root ports: - 8080:8080 - 50000:50000 container_name: jenkins volumes: - /home/ubuntu/jenkins_compose/jenkins_configuration:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock # 挂载宿主机的docker和docker-compose客户端到容器 - /usr/bin/docker:/usr/bin/docker - /usr/bin/docker-compose:/usr/bin/docker-compose
注意:需确保宿主机与容器内的Docker客户端版本兼容,避免API版本不匹配报错。
方案二:进入Jenkins容器手动安装Docker客户端
如果不想挂载宿主机文件,可直接在容器内安装Docker客户端(官方Jenkins镜像基于Debian系统):
- 进入运行中的Jenkins容器:
docker exec -it jenkins bash
- 执行以下命令安装Docker客户端及docker-compose:
# 更新系统源 apt-get update # 安装依赖包 apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - # 添加Docker软件源 add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" # 安装Docker客户端 apt-get update && apt-get install -y docker-ce-cli # 安装docker-compose curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
安装完成后退出容器,重新运行流水线即可。
额外注意事项
- 确认宿主机Docker守护进程处于运行状态,且
/var/run/docker.sock的权限允许容器内root用户访问 - 若Docker版本低于20.10,需将流水线中的
docker compose up改为docker-compose up(带横杠的旧命令格式)
内容的提问来源于stack exchange,提问作者Kirill_Yudaev
相关产品推荐
相关产品推荐

