现在我正在尝试了解Docker,但仍有一些想法不明确; 我试图运行我刚创建的图像,这是目录;
你好(目录):
和Dockerfile:
FROM scratch
ADD start.sh /var/
CMD ["/var/start.sh"]
start.sh:
#!/bin/bash
echo "hello world"
我已标记为使用: docker build -t mozer /你好。
我运行命令后;
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。 :我正在开发一台没有连接互联网的机器!
答案 0 :(得分:2)
FROM scratch
是一个完全空的文件系统。您没有安装库,也没有包含shell(如/ bin / sh)。要使用它作为基础,您需要一个静态链接的二进制文件,或者您需要安装Linux发行版附带的所有常规工具。
后者是在docker hub上的各种busybox,debian,ubuntu,centos等图像中预先打包的内容。使用最小基本图像使图像工作的快速方法是将从更改为FROM busybox
并将/bin/bash
更改为/bin/sh
。
答案 1 :(得分:1)
Scratch image是一个空文件系统,里面没有/ bin / sh。
查看Creating a simple base image using scratch
您可以使用Docker的保留,最小图像,刮擦作为起点 建造集装箱的要点。使用划痕“图像”信号来 您希望Dockerfile中的下一个命令的构建过程 是您图像中的第一个文件系统层。
您可以添加可执行的编译程序并运行它。