首页 > 解决方案 > Docker中的“CMD [“-?”]”是什么意思?

问题描述

《Docker Book v17.12.0-ce》第223页

清单 6.19:我们的战争文件提取器
FROM ubuntu:16.04
MAINTAINER James Turnbull
ENV REFRESHED_AT 2016-06-01
RUN apt-get -yqq update
RUN apt-get -yqq install wget
VOLUME [ "/var/lib/tomcat7/webapps/" ]
WORKDIR /var/lib/tomcat7/webapps/
ENTRYPOINT [ "wget" ]
CMD [ "-?" ]

这个非常简单的图像做了一件事:它从一个 URL 中获取任何文件,当容器从它运行时指定的 URL 并将该文件存储在 /var/lib /tomcat7/webapps/ 目录中。该目录也是一个卷和任何容器的工作目录。我们将与我们的 Tomcat 服务器共享这个卷并运行它的内容。最后,ENTRYPOINT 和 CMD 指令允许我们的容器在没有指定 URL 时运行;他们通过在没有 URL 的情况下运行容器时返回 wget 帮助输出来做到这一点。

谁能告诉我“CMD [“-?”]”是什么意思

我知道ENTRYPOINT和CMD的概念,我不明白的是“-?”的含义 在“wget -?”

标签: docker

解决方案


当你运行一个 Docker 容器时,它通过简单地连接“入口点”和“命令”来构造一个命令行。那些来自docker run命令行中的不同位置;但如果您不提供--entrypoint选项,则ENTRYPOINT使用 Dockerfile 中CMD

所以,有几个调用:

# Does "wget -?"
docker run --rm thisimage

# Does "wget -O- http://stackoverflow.com": dumps the SO home page
docker run --rm thisimage -O- http://stackoverflow.com

# What you need to do to get an interactive shell
docker run --rm -it --entrypoint /bin/sh thisimage

推荐阅读