Meh*_*lik 13 bash shell docker dockerfile
我想了解CMD和ENTRYPOINT的工作原理。所以,我刚刚创建了一个非常简单的Dockerfile
FROM scratch
CMD echo "Hello First"
ENTRYPOINT echo "Hello second"
Run Code Online (Sandbox Code Playgroud)
然后我建立这个形象:
docker build -t my_image .
Run Code Online (Sandbox Code Playgroud)
日志如下:
步骤1/3:从头开始--->步骤2/3:CMD回显“ Hello First” --->使用缓存---> 9f2b6a00982f步骤3/3:ENTRYPOINT回显“ Hello first” --->使用缓存---> 1bbe520f9526已成功构建1bbe520f9526已成功标记my_image:latest安全警告:您正在针对非Windows Docker主机从Windows构建Docker映像。添加到构建上下文的所有文件和目录都将具有“ -rwxr-xr-x”权限。建议仔细检查并重置敏感文件和目录的权限。
当我创建此图像的容器时,它返回:
docker run my_image
Run Code Online (Sandbox Code Playgroud)
错误是:
泊坞窗:来自守护程序的错误响应:OCI运行时创建失败:container_linux.go:344:启动容器进程导致“ exec:\” / bin / sh \”:stat / b in / sh:无此类文件或目录”:未知。
有人可以帮我解决错误吗?
Dav*_*aze 16
这里发生两件事。
FROM scratch
从基本映像开始的Dockerfile根本不包含任何内容。它完全是空的。除了Docker为您提供的几个设备文件之外,没有一组基础工具或库或其他任何东西。
该ENTRYPOINT echo ...
命令被Docker重写为ENTRYPOINT ["/bin/sh", "-c", "echo ..."]
,并导致CMD
完全被忽略。除非被覆盖docker run --entrypoint
,否则它将成为容器运行的主要过程。
由于它是FROM scratch
映像,根本不包含任何内容,因此它不包含外壳程序,因此出现“ / bin / sh:无此类文件或目录”错误。