假设我们有以下docker映像:osimis/orthanc-dicom-syncher
。我们没有Dockerfile
或代码存储库(通过docker history
可以获得的存储库除外)。
该docker映像的entrypoint
带有python脚本(如/usr/local/bin/orthanc-dicom-syncher
中一样)。我想查看该脚本的内容,但是不幸的是,容器在运行后立即停止。这就排除了bash
进入容器以容纳必要文件的可能性。
此外,如果我尝试docker run
,则docker将整个命令作为参数传递给python脚本。
我尝试解决此问题,
docker commit <orthanc-dicom-syncher_contained_id> my-broken-container
docker run -it my-broken-container /bin/bash
但这再次将/bin/bash
部分作为python脚本的参数运行(产生orthanc-dicom-syncher: error: unrecognized arguments: /bin/bash
)。
任何建议如何(理想情况下)bash
进入容器或(足够)提取入口点代码的建议都将受到赞赏。
该图像没有github仓库,所以我在网上找不到代码;无论如何,即使是这样,我很好奇如何解决这个问题。。
答案 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