【问题标题】:Not able to set/override docker entrypoint to execute two commands无法设置/覆盖 docker 入口点以执行两个命令
【发布时间】:2019-11-02 21:06:31
【问题描述】:

我在启动 docker 映像时尝试设置/覆盖 docker 入口点,但出现意外行为

场景 1(不工作)

  1. Docker 运行命令 --> docker run --rm -it --privileged --net=host python3.6 -m CameraServerBasler.pylon_video & python3.6 -m CameraServerBasler.server
  2. 输出 --> /usr/bin/python3.6: 查找模块时出错 “CameraServerBasler.server”的规范(ModuleNotFoundError: 没有名为“CameraServerBasler”的模块)

场景 2(工作)

如果我在 docker image bash 中执行相同的命令,一切都会按预期工作

  1. Docker 运行命令 --> docker run --rm -it --privileged --net=host --entrypoint=/bin/bash
  2. 在 docker 镜像中执行的命令 --> python3.6 -m CameraServerBasler.server & python3.6 -m CameraServerBasler.pylon_video
  3. 输出 --> 两个服务器(模块)都按预期启动并运行(服务器 和 pylon_video)

Docker 镜像 --> ubuntu:18.04

我在 docker run 命令中遗漏了什么吗?

【问题讨论】:

  • 它们是否需要在同一个 Docker 容器中?如果您正在运行容器 --privileged --net host,那么它们在 Docker 中是否有任何好处?
  • 请分享 dockerfile 并将命令格式化为代码
  • 你的意思是 && 在你的命令中吗?

标签: python docker ubuntu docker-compose


【解决方案1】:

我已经能够使用 sh 脚本解决此问题,但仍然不太清楚为什么使用方法 #1 不起作用

方法 #1 不起作用

docker 文件中声明的入口点

ENTRYPOINT ["python3.6", "-m", "CameraServerBasler.server", "&", "python3.6", "-m", "CameraServerBasler.pylon_video"]

方法 #2 工作

docker 文件中声明的入口点

ENTRYPOINT ["sh", "init.sh"]

init.sh 文件内容

python3.6 -m CameraServerBasler.server & python3.6 -m CameraServerBasler.pylon_video

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2011-01-26
    • 2017-09-29
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多