为什么我不能从IBM Liberty Docker镜像运行简单的ping

时间:2015-04-16 21:59:14

标签: docker websphere-liberty

我正在学习IBM Containers和Docker。我创建了一个2行的Docker文件来测试它:

FROM registry-ice.ng.bluemix.net/ibmliberty
CMD ["ping","google.com"]

不幸的是,当我从这张图片中运行一个容器时,它会提供以下输出:

> docker run liberty-ping
Usage: ping [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
        [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
        [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
        [-w deadline] [-W timeout] [hop1 ...] destination

当我将FROM行更改为FROM ubuntu:trusty时,ping执行得非常完美。发生了什么事?

1 个答案:

答案 0 :(得分:0)

感谢友好的评论,我发现websphere-liberty Dockerfile确实包含了一个入口点:https://github.com/WASdev/ci.docker/blob/master/websphere-liberty/8.5.5/developer/Dockerfile#L57

http://docs.docker.com/reference/builder/#cmd读取Dockerfile引用我明白有一个选项可以根据ENTRYPOINT执行参数,但是我没有意识到CMD语法的其他两种风格不会被'设置ENTRYPOINT时工作。

我将dockerfile更改为:

FROM registry-ice.ng.bluemix.net/ibmliberty
ENTRYPOINT ["/bin/ping"]
CMD ["google.com"]

现在有效!