无法从头开始码头集装箱
问题描述:
现在我正在尝试了解Docker,但仍有一些想法不清楚; 我试图运行一个我刚刚创建的图像,这里是目录;无法从头开始码头集装箱
你好(目录):
- Dockerfile
- start.sh
而且Dockerfile:
FROM scratch
ADD start.sh /var/
CMD ["/var/start.sh"]
start.sh:
#!/bin/bash
echo "hello world"
我已标记为使用: docker build -t mozer/hello。
一旦我运行命令;
docker run mozer/hello
no such file or directory
Error response from daemon: Cannot start container f22019aabc81f29fe17e849a2c040902ccadefe6cb8a8fe2612c83fe8eda40ea: [8] System error: no such file or directory
,一旦我运行命令:
docker run mozer/hello /bin/sh -c
exec: "/bin/sh": stat /bin/sh: no such file or directory
Error response from daemon: Cannot start container 3b54584092e70b639671aca66122a0b1f6b1e4327cb2471a8792c3b2337b0bcc: [8] System error: exec: "/bin/sh": stat /bin/sh: no such file or directory
能否请您给我一些建议,以找到解决办法?
P.S. :我正在使用未连接到互联网的机器!
答
FROM scratch
是一个完全空白的文件系统。您没有安装的库,并且没有包含在其中的shell(如/ bin/sh)。要使用它作为你的基础,你需要一个静态链接的二进制文件,或者你需要安装linux发行版中包含的所有常规工具。
后者是预先包装在码头集线器上的各种busybox,debian,ubuntu,centos等图像中。使图像以最小基本图像工作的快速方法是将其从FROM busybox
更改为/bin/bash
并将其更改为/bin/sh
。
答
临时图像是一个空文件系统,里面没有/ bin/sh。
看Creating a simple base image using scratch
您可以使用多克的保留,最小的图像,防刮花,作为起始 点建设集装箱。使用 的暂存“映像”信号,您希望Dockerfile中的下一个命令的构建过程为 是图像中的第一个文件系统层。
您可以添加一个可执行的编译程序并运行它。