热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dockerfile:运行/usr/sbin/init

如何解决《Dockerfile:运行/usr/sbin/init》经验,为你挑选了1个好方法。

Dockerfile

FROM centos:7
COPY docker-entrypoint.sh /data/
ENTRYPOINT ["/data/docker-entrypoint.sh"]

docker-entrypoint.sh

exec /usr/sbin/init && systemctl restart autofs %% python /data/myapp.py

我需要/usr/sbin/init作为第一个命令运行,然后运行后续命令,如systemctl restart autofspython myapp.py

我似乎无法让所有工作在docker-entrypoint.sh内部因为/usr/sbin/init不返回

如果我将docker-entrypoint.sh更改为

/usr/sbin/init &
systemctl restart autofs && python /data/myapp.py

它在d-bus中失败并出错

我能做什么,容器运行/usr/sbin/init,systemctl restart autofs并按python /data/myapp.py顺序执行"docker run"时?

/usr/sbin/init执行后是否还有其他方法可以运行命令?我已经尝试将systemctl作为CMD放在Dockerfile中

FROM centos:7
ENTRYPOINT ["/usr/sbin/init"]
CMD ["systemctl restart autofs"]

但CMD永远不会被执行



1> philipp..:

声明

ENTRYPOINT ["/usr/sbin/init"]
CMD ["systemctl"]

将导致:

/usr/sbin/init systemctl

换句话说,该ENTRYPOINT指令设置可执行文件,该可执行文件用于执行从指令给出的COMMAND命令.

默认情况ENTRYPOINT/bin/sh -c这样/bin/sh -c /data/docker-entrypoint.sh,如果/data/docker-entrypoint.sh包含:

/usr/sbin/init
systemctl restart autofs
python /data/myapp.py

这意味着:你不必改变 ENTRYPOINT

如果更改了ENTRYPOINT/data/docker-entrypoint.sh比它应该包含这样的内容:

/usr/sbin/init
systemctl restart autofs
python /data/myapp.py
# run the command given as arguments from CMD
exec "$@"

参考


推荐阅读
author-avatar
快乐的kang918_863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有