该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 次 |
最近记录: |