大家好,欢迎来到IT知识分享网。
打包好后的Docker镜像,要变成动态运行的容器,书写Dockerfile时需要使用ENTRYPOINT或者CMD,本文主要介绍ENTRYPOINT指令。
ENTRYPOINT和CMD一样都拥有两种form:exec form、shell form
exec form
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT在“exec form”下可以和CMD合用,需要注意CMD也必须是“exec form”,此时CMD中的内容充当ENTRYPOINT中可执行命令的参数,比如下面:
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
容器运行时,输出指令是“top -b -c”。
经验:将固定的args写到ENTRYPOINT,将易变的args写到CMD,比如上面“-c”就是易变的args,如果要覆盖它的内容,运行镜像时加上新的args即可,如下:
docker run -it --rm --name test top -H
这样最后执行到的就是“top -b -H”
“exec form”下,不能自动解析环境变量,因为解析环境变量是shell的功能,解决这个问题也不难,将shell作为ENTRYPOINT的executable部分,实际执行命令作为shell的args:
ENTRYPOINT [ "/bin/sh", "-c", "echo $HOME" ]
或者直接写一个script,以“#!/bin/sh”开头
shell form
格式,
ENTRYPOINT command param1 param2
使用这种运行方式,可以正常解析环境变量,但不能和CMD合用了,举例:
ENTRYPOINT curl
CMD ["http://www.example.com/"]
输出指令会是“curl”
简要介绍ENTRYPOINT指令,希望能帮到你!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/45314.html