Packer使我的docker构建失败,出现错误;sudo:notfound";尽管sudo在场
我正试图建立一个与docker对它的包装器图像,我希望docker创建一个自定义脚本docker图像。我的代码的相关部分是(请注意,顶级构建器会仔细检查是否安装了sudo): 我的屏幕输出的相关部分是:Packer使我的docker构建失败,出现错误;sudo:notfound";尽管sudo在场,docker,packer,Docker,Packer,我正试图建立一个与docker对它的包装器图像,我希望docker创建一个自定义脚本docker图像。我的代码的相关部分是(请注意,顶级构建器会仔细检查是否安装了sudo): 我的屏幕输出的相关部分是: ==> docker: provisioning with shell script: /var/folders/s8/g1_gobbldygook/T/packer-shell23453453245 docker: /temp/script_1234.sh: 3: /tmp/sc
==> docker: provisioning with shell script: /var/folders/s8/g1_gobbldygook/T/packer-shell23453453245
docker: /temp/script_1234.sh: 3: /tmp/script_1234.sh: sudo: not found
==> docker: killing the contaner: 34234hashvomit234234
Build 'docker' errored: Scipt exited with non-zero exit status: 127
这个剧本不是我的。它是一些随机生成的脚本,每次构建时都有一系列不同的四个数字。我对packer和docker都是新手,所以问题可能很明显,但对我来说并非如此。您的packer输入似乎有一些问题。由于您没有包含完整的输入文件,很难说清楚,但请注意以下几点:
apt get install sudo
之前,您可能需要运行apt get update
。否则,即使映像缓存了包元数据,它也可能会过时。如果我尝试使用您的输入构建映像,则会失败,原因是:
E: Unable to locate package sudo
Stderr: Error response from daemon: run is not a valid change command
apt get
命令行上显式包含-y
:
apt get-y安装sudo
在apt get
连接到终端的情况下,这将阻止其提示确认。这并不是对您的输入进行必要的更改,但我认为明确一点是好的changes
块中包含RUN
语句。这在以下方面失败:
E: Unable to locate package sudo
Stderr: Error response from daemon: run is not a valid change command
幸运的是,我们可以将pip install
命令移动到shell
provisioner中{
"builders": [{
"type": "docker",
"image": "python:3",
"commit": true
}],
"provisioners": [{
"type": "shell",
"inline": [
"apt-get update",
"apt-get -y install sudo",
"pip install Flask"
]
}],
"post-processors": [[ {
"type": "docker-tag",
"repository": "packer-test",
"tag": "latest"
} ]]
}
(NB:使用Packer v1.3.5进行测试)您的Packer输入似乎有一些问题。由于您没有包含完整的输入文件,很难说清楚,但请注意以下几点:
apt get install sudo
之前,您可能需要运行apt get update
。否则,即使映像缓存了包元数据,它也可能会过时。如果我尝试使用您的输入构建映像,则会失败,原因是:
E: Unable to locate package sudo
Stderr: Error response from daemon: run is not a valid change command
apt get
命令行上显式包含-y
:
apt get-y安装sudo
在apt get
连接到终端的情况下,这将阻止其提示确认。这并不是对您的输入进行必要的更改,但我认为明确一点是好的changes
块中包含RUN
语句。这在以下方面失败:
E: Unable to locate package sudo
Stderr: Error response from daemon: run is not a valid change command
幸运的是,我们可以将pip install
命令移动到shell
provisioner中{
"builders": [{
"type": "docker",
"image": "python:3",
"commit": true
}],
"provisioners": [{
"type": "shell",
"inline": [
"apt-get update",
"apt-get -y install sudo",
"pip install Flask"
]
}],
"post-processors": [[ {
"type": "docker-tag",
"repository": "packer-test",
"tag": "latest"
} ]]
}
(NB:使用封隔器v1.3.5进行测试)