制作镜像实例之ENTRYPOINT+CMD

目录

1、介绍

 2、实验

2.1  创建dockerfile文件存放目录

2.2  修改dockerfile文件

2.3  创建entrypoint.sh文件

2.4  创建index.html

2.5  创建镜像

2.6  测试略


1、介绍

ENTRYPOINT        :容器启动后执行的命令,使用此参数后初始命令不容易被覆盖

ENTRYPOINT的格式和 RUN 指令格式一样,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数。ENTRYPOINT在运行时也可以替代,不过比 CMD 要略显繁琐,需要通过 docker run 的参数--entrypoint来指定。应用场景:

  • 让镜像变成像命令一样使用
  • 应用运行前的准备工作
  • 存在多个ENTRYPOINT的指令时,仅有最后一个生效

 2、实验

2.1  创建dockerfile文件存放目录

mkdir /test

cd /test

2.2  修改dockerfile文件

[root@ybb test]# cat dockerfile

FROM  2073e0bcb60e

ENV  WEB_ROOT   /usr/share/nginx/html/

COPY index.html ${WEB_ROOT}

ADD entrypoint.sh /bin/

CMD ["/usr/sbin/nginx","-g","daemon off;"]

ENTRYPOINT ["/bin/entrypoint.sh"]

[root@ybb test]#

ENTRYPOINT ["/bin/entrypoint.sh"]在CMD运行前结束,ENTRYPOINT运行的是shell进程。

  • ENV        是定义环境变量
  • COPY     复制文件index.html
  • ADD       这里的功能也是复制,和COPY一样
  • nginx -g 表示设置个全局选项
  • daemon 后台运行
  • off          不在后台运行,放到前台运行

2.3  创建entrypoint.sh文件

[root@ybb test]# cat entrypoint.sh

#!/bin/sh

cat > /etc/nginx/conf.d/nginx.conf << EOF

server {

    server_name $HOSTNAME;

    listen ${ip:-0.0.0.0}:${port:-80};

    root ${DOC_ROOT:-/usr/share/nginx/html};

}

EOF

exec "$@"

[root@ybb test]#

  • EOF只是一个分界符,当shell遇到<<时,它知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。
  • exec "$@"当执行CMD时,会替换ENTRYPOINT的shell进程,执行CMD的所有“$@”会替换当前脚本的执行进程,这样CMD就是容器的第一进程。
  • 若没有exec "$@",这个脚本当执行完仍会占用一个shell进程,容器最好有且只有一个进程那就是程序的执行进程。

2.4  创建index.html

[root@ybb test]# cat index.html

qwqwqwqw

[root@ybb test]#

2.5  创建镜像

[root@ybb test]# docker build -t nginx:v3 ./

Sending build context to Docker daemon 4.096 kB

Step 1 : FROM 2073e0bcb60e

 ---> 2073e0bcb60e

Step 2 : ENV WEB_ROOT /usr/share/nginx/html/

 ---> Using cache

 ---> 3a849b90d442

Step 3 : COPY index.html ${WEB_ROOT}

 ---> Using cache

 ---> 2a2ae4f2f31a

Step 4 : ADD entrypoint.sh /bin/

 ---> Using cache

 ---> 96a148231d1d

Step 5 : CMD nginx -g daemon off;

 ---> Using cache

 ---> 1e1f9fde7545

Step 6 : ENTRYPOINT /bin/entrypoint.sh

 ---> Using cache

 ---> 378c8493d0dc

Successfully built 378c8493d0dc

[root@ybb test]#

2.6  测试略

进入容器查看entrypoint.sh文件

查看index.html文件

查看nginx.conf文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_44250083

微信号:c_x_y_000

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值