无法从头开始使用docker容器

时间:2017-03-03 16:50:38

标签: docker

现在我正在尝试了解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 /你好。

我运行命令后;

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。 :我正在开发一台没有连接互联网的机器!

2 个答案:

答案 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中的下一个命令的构建过程   是您图像中的第一个文件系统层。

您可以添加可执行的编译程序并运行它。