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 信息的容器
来源: http://www.bubuko.com/infodetail-3398278.html