附加到具有基本图像划痕的docker集装箱?

我有一个docker文件如下:

FROM scratch ARG VERSION=NOT_SET ENV VERSION $VERSION COPY foobar foobar COPY foobar-*.yaml /etc/ COPY jwt/ /etc/jwt/ EXPOSE 8082 ENTRYPOINT ["./foobar"] CMD ["-config", "/etc/foobar-local.yaml"] 

现在,docker ps显示如下:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 653a9b287eb6 7693481.dkr.ecr.us-east-1.amazonaws.com/foobar:0.0.1 "./foobar -config /e" About a minute ago Up About a minute foobar 

当我尝试使用以下命令来执行此容器时:

 sudo docker exec -it 653a9b287eb6 /bin/bash 

它显示以下错误:

 rpc error: code = 2 desc = oci runtime error: exec failed: exec: "/bin/bash": stat /bin/bash: no such file or directory 

您需要将一个shell添加到您的空基本图像(SCRATCH)以附加到它。

现在,你的图像只包含一个可执行文件,这是不够的。

正如问题17896所述

FROM scratch字面上是一个空的,零字节的图像/文件系统,你自己添加一切。
例如,请参阅hello-world ,生成总共860字节的图像。

如果你需要一个通过docker exec连接到它的shell,从像Alpine这样的图像开始(只有/bin/sh :你需要apk add bash来添加bash ,如user2915097所示 )。