我创建了一个集装箱码头.哪个应该给出以下内容:
docker run --rm container1
> Hello World!
docker run --rm container1 Bob
> Hello Bob!
我的Dockerfile:
FROM ubuntu:14.04
ENTRYPOINT ["/bin/echo","Hello"]
CMD ["World!"]
我的输出:
docker run --rm container1
> Hello World!
docker run --rm container1 Bob
> Hello Bob
我有一个损失“!”
最佳答案
你的问题可能来自你的Ubuntu shell完成的字符串连接的底层不理解
$echo "Hello" "I" "am" "a" "developer"
Hello I am a developer
这是有效的,因为shell没有连接运算符.因此,实际上用字符串提供回声会使所有这些字符串连接成回声,其中没有真正的黑魔法,而且据我所知,字符串按它们传递给echo的顺序连接起来.
现在你真正想要实现的目标可以很容易地用printf
来完成,它可以从参数中替换一种格式:
printf 'Hello %s!' 'Bob'
> Hello Bob!
有关printf substitution的更多信息,请访问there.
所以如果你的Dockerfile是:
FROM ubuntu:14.04
ENTRYPOINT ["printf","Hello %s!"]
CMD ["World"]
您将获得预期的结果.
$cat Dockerfile
FROM ubuntu:14.04
ENTRYPOINT ["printf","Hello %s!"]
CMD ["World"]
$docker build -t demo .
$docker run --rm demo Bob
Hello Bob!