如何照顾码头工人的ENTRYPOINT?

时间:2019-09-17 08:12:35

标签: docker

假设我们有以下docker映像:osimis/orthanc-dicom-syncher。我们没有Dockerfile或代码存储库(通过docker history可以获得的存储库除外)。

该docker映像的entrypoint带有python脚本(如/usr/local/bin/orthanc-dicom-syncher中一样)。我想查看该脚本的内容,但是不幸的是,容器在运行后立即停止。这就排除了bash进入容器以容纳必要文件的可能性。

此外,如果我尝试docker run,则docker将整个命令作为参数传递给python脚本。

我尝试解决此问题,

  1. docker commit <orthanc-dicom-syncher_contained_id> my-broken-container
  2. docker run -it my-broken-container /bin/bash

但这再次将/bin/bash部分作为python脚本的参数运行(产生orthanc-dicom-syncher: error: unrecognized arguments: /bin/bash)。

任何建议如何(理想情况下)bash进入容器或(足够)提取入口点代码的建议都将受到赞赏。

该图像没有github仓库,所以我在网上找不到代码;无论如何,即使是这样,我很好奇如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

而且,由于这种情况经常发生,提出问题可以帮助我解决问题。

解决方案是使用entrypoint标志覆盖--entrypoint

docker run -it --entrypoint "/bin/cat" my-broken-container /usr/local/bin/orthanc-dicom-syncher

请注意命令和参数的位置(请参见this)。

答案 1 :(得分:2)

您可以使用以下内容:

docker create --name test osimis/orthanc-dicom-syncher
docker cp test:/usr/local/bin/orthanc-dicom-syncher .

然后您在工作目录中找到文件

PS 确保您允许使用或修改它们,但我不知道Term of use