发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
 总算懂得云计算核心技术Docker教程:Dockerfile文件ENTRYPOINT命令详解 - 三农网
Hi,你好,欢迎来到三农网
  • 产品
  • 求购
  • 公司
  • 展会
  • 招商
  • 资讯
当前位置: 首页 » 资讯 » 吃在农村 找商家、找信息优选VIP,安全更可靠!
总算懂得云计算核心技术Docker教程:Dockerfile文件ENTRYPOINT命令详解
发布日期:2021-11-18 05:39:20  浏览次数:25

Dockerfile文件ENTRYPOINT指令和 CMD 一样,都是在指定容器启动程序及参数。ENTRYPOINT 在运行时也可以替代,不过比 CMD 要略显繁琐,需要通过 docker run 的参数 --entrypoint 来指定。

当指定了 ENTRYPOINT 后,CMD 的含义就发生了改变,不再是直接的运行其命令,而是将 CMD 的内容作为参数传给 ENTRYPOINT 指令,换句话说实际执行时,将变为:

ENTRYPOINT "CMD"

ENTRYPOINT的使用场景:让镜像变成像命令一样使用

假设我们需要一个得知自己当前公网 IP 的镜像,那么可以先用 CMD 来实现:

FROM ubuntu:

RUN apt-get update

&& apt-get install -y curl

&& rm -rf /var/lib/apt/lists/*

CMD [ "curl", "-s", "" ]

假如我们使用 docker build -t myip . 来构建镜像的话,如果我们需要查询当前公网 IP,只需要执行:

$ docker run myip

上面的 CMD 中可以看到实质的命令是 curl,那么如果我们希望显示 HTTP 头信息,就需要加上 -i 参数。但当我们加上-i参数就会报executable file not found的错误,这是因为跟在镜像名后面的是 command,运行时会替换 CMD 的默认值。因此这里的 -i 替换了原来的 CMD,而不是添加在原来的 curl -s 后面。而 -i 根本不是命令,所以自然找不到。

如果我们希望加入 -i 这参数,我们就必须重新完整的输入这个命令:

$ docker run myip curl -s -i

使用ENTRYPOINT 就是一个很好的解决方案,使用命令如下:

FROM ubuntu:

RUN apt-get update

&& apt-get install -y curl

&& rm -rf /var/lib/apt/lists/*

ENTRYPOINT [ "curl", "-s", "" ]

ENTRYPOINT的使用场景:应用运行前的准备工作

启动容器就是启动主进程,但有些时候,启动主进程前,需要一些准备工作。

比如 mysql 类的数据库,可能需要一些数据库配置、初始化的工作,这些工作要在最终的 mysql 服务器运行之前解决。

此外,可能希望避免使用 root 用户去启动服务,从而提高安全性,而在启动服务前还需要以 root 身份执行一些必要的准备工作,最后切换到服务用户身份启动服务。或者除了服务外,其它命令依旧可以使用 root 身份执行,方便调试等。

这些准备工作是和容器 CMD 无关的,无论 CMD 为什么,都需要事先进行一个预处理的工作。这种情况下,可以写一个脚本,然后放入 ENTRYPOINT 中去执行,而这个脚本会将接到的参数(也就是)作为命令,在脚本最后执行。比如官方镜像 redis 中就是这么做的:

FROM alpine:

...

RUN addgroup -S redis && adduser -S -G redis redis

...

ENTRYPOINT ["docker-"]

EXPOSE 6379

CMD [ "redis-server" ]

可以看到其中为了 redis 服务创建了 redis 用户,并在最后指定了 ENTRYPOINT 为 docker- 脚本。

VIP企业最新发布
全站最新发布
最新VIP企业
背景开启

三农网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系 QQ: 1130861724

网站首页 | 实时热点 | 侵权删除 | 付款方式 | 联系方式 | 法律责任 | 网站地图 ©2022 zxb2b.com 三农网,中国大型农产品交易电商平台 鄂公网安备42018502006996 SITEMAPS | 鄂ICP备14015623号-20

返回顶部