在Dockerfile中除了CMD和ENTRYPOINT, 其他所有的指令均只存活在构建docker image的过程中。
那么在启动container时,启动服务或者执行指令和脚本的任务就需要由CMD和ENTRYPOINT来完成。
而Docker container需要一个进程一直处于RUNNING状态,否则container就会退出。
所以,希望一个服务作为container启动时的默认且唯一的服务,并和container一直存在,就需要满足:
1. CMD和ENTRYPOINT启动该服务
2.一个前置的一直存在的进程
则常见的用法有:
1)启动目标服务,并追加non-end命令
CMD service mysql start && tail -F /var/log/mysql/error.log
2)使用前置服务
CMD /usr/bin/mysqld_safe
3)启动目标服务,并追加/bin/bash命令
ENTRYPOINT/CMD service mysql start && /bin/bash
4) 脚本启动程序,尤其是步骤较多的时候
CMD /start.sh
网友评论