我正在从另一个设置特定入口点的图像创建图像.但是我希望我的图像具有默认图像.如何重置ENTRYPOINT?
我尝试了以下Dockerfile:
FROM some-image
ENTRYPOINT ["/bin/sh", "-c"]
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不像默认入口点那样工作,因为它需要引用命令.
docker run myimage ls -l / # "-l /" arguments are ignored
file1 file2 file3 # files in current working directory
docker run myimage "ls -l /" # works correctly
Run Code Online (Sandbox Code Playgroud)
如何在不引用的情况下使用命令?
Mat*_*att 31
要禁用现有ENTRYPOINT,请在docker文件中设置一个空数组
ENTRYPOINT []
Run Code Online (Sandbox Code Playgroud)
然后你的论点docker run将正常执行.
你ENTRYPOINT ["/bin/sh", "-c"]需要引用字符串的原因是没有引号,而是ls传递给的参数sh.
不带引号的结果会发送大量参数 sh
"/bin/sh", "-c", "ls", "-l", "/"
Run Code Online (Sandbox Code Playgroud)
引用允许将完整的command(sh -c)sh作为一个参数传递给它.
"/bin/sh", "-c", "ls -l /"
Run Code Online (Sandbox Code Playgroud)
这与docker并没有真正的关系。尝试运行以下命令:
/bin/sh -c echo foo
/bin/sh -c "echo foo"
的-c手段,/bin/sh只拿起一个论点。因此,-c从您定义的入口点中删除应该可以修复它。这比重置入口点更灵活;例如,您可以这样做以使用软件集合:
ENTRYPOINT ["scl", "enable", "devtoolset-4", "--", "bash"]
| 归档时间: |
|
| 查看次数: |
11757 次 |
| 最近记录: |