该run命令的文档遵循以下语法:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)
但是我有时发现我想要传递旗帜[COMMAND].
例如,我一直在处理这个图像,其中Dockerfile中[COMMAND]指定的是:
CMD ["/bin/bash", "-c", "/opt/solr/bin/solr -f"]
Run Code Online (Sandbox Code Playgroud)
有没有办法在标志上加以标记,"/opt/solr/bin/solr -f"以便它在表格中"/opt/solr/bin/solr -f [-MY FLAGS]"?
我是否需要编辑DockerFile或者是否有一些内置功能?
小智 7
有一个特殊指令ENTRYPOINT可以满足您的需求。不像CMD它会在你的命令末尾添加额外的标志。
例如,你可以写
ENTRYPOINT ["python"]
Run Code Online (Sandbox Code Playgroud)
并运行它
docker run <image_name> -c "print(1)"
Run Code Online (Sandbox Code Playgroud)
请注意,这仅在您以exec表单(via ["...", "..."])编写命令时才有效,否则ENTRYPOINT将shell在那里调用并传递您的参数,而不是您的脚本。
更一般地说,你可以结合ENTRYPOINT和CMD
ENTRYPOINT ["ping"]
CMD ["www.google.com"]
Run Code Online (Sandbox Code Playgroud)
哪里CMD表示您的ENTRYPOINT. 现在你可以同时运行
docker run <image_name>
docker run <image_name> yandex.ru
Run Code Online (Sandbox Code Playgroud)
并且只会CMD被替换。
可以在此处找到有关如何ENTRYPOINT和CMD交互的完整参考
在CMD一个的指令Dockerfile是当容器开始,将要运行的命令,如果在没有指定命令docker run的命令.
CMD的主要目的是为执行容器提供默认值.
在您的情况下,只需使用以下docker run命令覆盖Dockerfile中指定的默认命令:
docker run makuk66/docker-solr /bin/bash -c "/opt/solr/bin/solr -f [your flags]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6446 次 |
| 最近记录: |