我正在使用docker测试并尝试创建自己的docker镜像。
我的第一个Dockerfile只需将ubuntu作为基本映像并安装cowsay。
Dockerfile 1:
FROM ubuntu:latest
RUN apt-get update && apt-get -y install cowsay
ENTRYPOINT ["usr/games/cowsay"]
我使用
构建图像docker build -t test/cowsay .
并可以使用
运行它docker run test/cowsay Hello World
在下一步中,我想创建一个图像,如果docker调用没有其他参数,则将默认文本放在cowsay中。对于默认文本,我使用fortune。
Dockerfile 2
FROM test/cowsay:latest
RUN apt-get update && apt-get -y install fortune
ENTRYPOINT []
CMD /usr/games/fortune -s | /usr/games/cowsay -f tux
我使用
构建图像docker build -t test/fortune .
并使用
运行它docker run test/fortune
________________________________________
/ You possess a mind not merely twisted, \
\ but actually sprained. /
----------------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
但至少我只想在docker调用中没有其他参数时才使用fortune中的默认文本。
如果我输入
docker run test / fortune Hello
/ usr / games / fortune -s 必须替换为 Hello 。 _______
< Hello >
-------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
有谁知道如何解决我的问题?
答案 0 :(得分:1)
您必须使用bash脚本和ENTRYPOINT
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh
<强> entrypoint.sh 强>
if [ $# -eq 0 ]
then
/usr/games/fortune -s | /usr/games/cowsay -f tux
else
echo $@ | /usr/games/cowsay -f tux
fi