【问题标题】:interactive container + daemon process at container startup容器启动时的交互式容器 + 守护进程
【发布时间】:2016-05-23 16:32:40
【问题描述】:

我想创建一个交互式容器,但也想创建一个后台运行的守护程序。

我用 ENTRYPOINT (Dockerfile: ENTRYPOINT ["service", "mysql", "start"]) 构建了一个镜像,通过这个镜像,我创建了一个交互式容器,但是容器只是没有启动。 .

$ docker create --net=host --name=debian-mysql -it ivanlmj/debian-7-mysql-5.7.12:latest bash a66630403170f87ca7760a4609675708fa98abfe7e2b7b53a76a147f626aa733 $ docker ps --all -f "name=debian-mysql" 容器 ID 图像命令创建状态端口名称 a66630403170 ivanlmj/debian-7-mysql-5.7.12:latest "service mysql start 14 seconds ago debian-mysql $ docker 启动 debian-mysql Debian-mysql $ docker ps --all -f "name=debian-mysql" 容器 ID 图像命令创建状态端口名称 a66630403170 ivanlmj/debian-7-mysql-5.7.12:latest "service mysql start 27 seconds ago Exited (0) 不到一秒前 debian-mysql

构建一个在后台自动运行守护进程的交互式容器的正确方法是什么?

非常感谢任何帮助。

提前谢谢各位!

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    经过几个小时的努力,我找到了!

    在 Dockerfile 内部:

    来自debian:杰西 维护者 Ivan Leon (ivanlmj@gmail.com) - @ivanleoncz 跑 ... ... ... CMD 服务 mysql 启动 && bash
    • 这个终极语句,将通过 Sys V 初始化脚本或 Upstart 启动 MySQL。
    • 如果守护程序启动成功(按位与:&&),随后将生成 BASH 提示符。
    • 从镜像创建容器时,只需要为交互容器指定“-it”,而不需要传递“bash”作为命令。
      docker run --net=host --name=debian-mysql -it ivanlmj/debian-7-mysql-5.7.12

    完成了!

    重要信息

    CMD 有两种形式:带壳和不带壳(JSON 数组)。 如果您使用 CMD 的 shell 形式,那么将执行 在“/bin/sh -c”中(它是默认的 Docker 入口点)。

    重要参考:https://docs.docker.com/engine/reference/builder/#cmd

    【讨论】:

      猜你喜欢
      • 2017-05-16
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2019-03-15
      • 2018-09-12
      相关资源
      最近更新 更多