CMD/ENTRYPOINT都是指定一个容器启动时要运行的命令
CMD命令
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
ENTRYPOINT命令
docker run 之后的参数会被当做参数传递给 ENTRYPOINT,之后形成新的命令组合
一、制作CMD版可以查询IP信息的容器
二、如果我们希望显示 HTTP 头信息,就需要加上 -i 参数
分析:
我们可以看到可执行文件找不到的报错,executable file not found。
之前我们说过,跟在镜像名后面的是 command,运行时会替换 CMD 的默认值。
因此这里的 -i 替换了原来的 CMD,而不是添加在原来的 curl -s http://ip.cn 后面。而 -i 根本不是命令,所以自然找不到。
那么如果我们希望加入 -i 这参数,我们就必须重新完整的输入这个命令:
$ docker run myip curl -s http://ip.cn -i
三、制作ENTROYPOINT版查询IP信息的容器