Jenkins Pipeline使用img构建Docker镜像时出现nsenter错误
解决Jenkins中使用img构建Docker镜像时的
nsenter: USER is unset错误 问题描述
已在Jenkins环境成功安装img(项目版本v0.5.11),安装命令如下:
sudo apt-get update -y \ && sudo apt-get install -y uidmap \ && echo "Downloading img" \ && curl -fSL "https://github.com/genuinetools/img/releases/download/v0.5.11/img-linux-amd64" -o "/usr/local/bin/img" \ && echo "cc9bf08794353ef57b400d32cd1065765253166b0a09fba360d927cfbd158088 /usr/local/bin/img" | sha256sum -c - \ && chmod a+x "/usr/local/bin/img"
但通过Makefile执行镜像构建操作时,出现错误:
nsenter: USER is unset: Inappropriate ioctl for device
解决方法
1. 临时设置USER环境变量
在Jenkins构建步骤中,执行Makefile前先设置环境变量:
export USER=$(whoami)
或者直接在Makefile的构建目标中加入这行:
your-build-target: export USER=$(whoami) && img build -t your-image-tag .
2. 持久化配置USER变量
编辑Jenkins运行用户的环境配置文件(如~/.bashrc或~/.profile),添加:
export USER=jenkins
执行source ~/.bashrc加载配置,然后重启Jenkins服务使设置生效。
3. 通过sudo执行img命令
若Jenkins用户有sudo权限,可在Makefile中用sudo调用img:
build: sudo img build -t your-image .
为避免输入密码,通过visudo添加免密规则:
jenkins ALL=(ALL) NOPASSWD: /usr/local/bin/img
内容的提问来源于stack exchange,提问作者boycod3
相关产品推荐
相关产品推荐

