Dockerfile中的ENTRYPOINT

Dockerfile中的ENTRYPOINT打包好后的Docker镜像,要变成动态运行的容器,书写Dockerfile时需要使用ENTRYPOINT或者CMD,本文主要介绍ENTRYPOI

大家好,欢迎来到IT知识分享网。Dockerfile中的ENTRYPOINT"

打包好后的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

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信