我试图在ubuntu-14系统中创建自己的docker镜像。
我的docker文件如下所示:
FROM scratch
RUN /bin/bash -c 'echo "hello"'
运行docker build .
时收到错误消息:
exec: "/bin/sh": stat /bin/sh: no such file or directory
我想这是因为/bin/sh
在基本图像中不存在" scratch"。我该如何解决这个问题?
答案 0 :(得分:3)
Docker基本上是一个容器式工具,与虚拟机相比,它有助于构建系统并在闪存中启动和运行,而不会占用大量资源。
Docker容器基本上是一个分层容器。如果您碰巧读取了Dockerfile,该文件中的每个命令都将导致在容器和最后一层中创建一个新层是Dockerfile中所有命令执行后你的容器实际上是什么。
Dockerhub上提供的图像专门针对此类环境进行了优化,并且非常易于设置和构建。如果您正在从头开始构建容器,即没有任何基本映像,那么您基本上拥有的是一个空容器。空容器无法理解 / bin / bash 实际上是什么,因此它不适合您。
Docker容器不使用底层操作系统的任何细节。多个docker容器将以有效的方式使用相同的底层内核。而已。没有其他的。 ( 但卷的概念,其中容器在本地底层系统上共享特定卷 ) < / p>
因此,如果您想使用/ bin / bash,您需要一个基本映像,它将为您的容器设置此命令的细节,然后您就可以成功执行它。
但是,建议您使用官方Docker图像说Ubuntu,然后在其上安装自定义内容。官方图片来自制造商,并且针对这种环境进行了高度优化。
答案 1 :(得分:2)
基本图片scratch
不使用/bin/bash
。所以你应该改为:
FROM ubuntu:14.04
RUN /bin/sh -c 'echo "hello"'