遇到“/斌/ 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"'