遇到“/斌/ bash:没有这样的文件”从头开始build立docker图像

我正在尝试在ubuntu-14系统中创build自己的Docker镜像。

我的docker文件如下所示:

FROM scratch RUN /bin/bash -c 'echo "hello"' 

当我运行docker build .时,我得到了错误信息docker build .

exec: "/bin/sh": stat /bin/sh: no such file or directory

我想这是因为/bin/sh不存在于基本映像“scratch”中。 我应该如何解决这个问题?

Docker基本上是一个集装箱工具,与虚拟机相比,它有助于构build系统并使其运行在没有大量资源利用的情况下运行。

Docker容器基本上是一个分层容器。 如果你碰巧读了一个Dockerfile,那么这个文件中的每个命令都会导致在容器中创build一个新的图层,最后一个图层就是Dockerfile中的所有命令执行完毕后,你的容器实际上是什么。

Dockerhub上提供的图像专门针对这种环境进行了优化,并且非常易于安装和构build。 如果你是从头开始build立一个容器,即没有任何基础图像,那么你基本上是一个空容器。 一个空的容器不知道/ bin / bash实际是什么,因此它不适合你。

Docker容器不使用您的底层操作系统的任何细节。 多个Docker容器将以有效的方式使用相同的底层内核。 而已。 没有其他的。 然而,容器的概念是容器在本地底层系统上共享一个特定的容量

所以如果你想使用/ bin / bash,你需要一个基本的映像,它将为你的容器设置这个命令的基本信息,然后你就可以成功执行它。

但是,build议您使用正式的Docker镜像来说Ubuntu,然后在其上安装自定义的东西。 官方图片是从制造商的权利,并针对这个环境高度优化。

基本图像scratch不使用/bin/bash 。 所以你应该改变:

 FROM ubuntu:14.04 RUN /bin/sh -c 'echo "hello"'