Docker SCRATCH容器罐';找不到文件

Docker SCRATCH容器罐';找不到文件,docker,redis,static-linking,dockerfile,Docker,Redis,Static Linking,Dockerfile,我有一个非常简单的dockerfile: FROM scratch MAINTAINER "aosmith" <a..h@...com> EXPOSE 6379 ADD redis-server /redis-server ENTRYPOINT ["/redis-server"] 我尝试了各种组合的CMDEXECADD和COPY,但运气不佳 我从源代码构建redis,如下所示: make CFLAGS="-static" EXEEXT="-static" \ MALLOC=libc

我有一个非常简单的dockerfile:

FROM scratch
MAINTAINER "aosmith" <a..h@...com>
EXPOSE 6379
ADD redis-server /redis-server
ENTRYPOINT ["/redis-server"]
我尝试了各种组合的
CMD
EXEC
ADD
COPY
,但运气不佳

我从源代码构建redis,如下所示:

make CFLAGS="-static" EXEEXT="-static" \
MALLOC=libc LDFLAGS="-I/usr/local/include/"
值得注意的是,我基本上使用完全相同的Dockerfile用于go项目,没有任何问题

有什么想法吗?

scatch图像实际上是空的,只能由像go这样对运行时环境几乎没有依赖性的技术使用

尝试提供一组操作系统实用程序的基本映像,例如bash等

FROM ubuntu
MAINTAINER "aosmith" <a..h@...com>
EXPOSE 6379
ADD redis-server /redis-server
ENTRYPOINT ["/redis-server"]
来自ubuntu的

维护者“aosmith”
暴露6379
添加redis服务器/redis服务器
入口点[“/redis服务器”]
scatch图像实际上是空的,只能由像go这样对运行时环境几乎没有依赖性的技术使用

尝试提供一组操作系统实用程序的基本映像,例如bash等

FROM ubuntu
MAINTAINER "aosmith" <a..h@...com>
EXPOSE 6379
ADD redis-server /redis-server
ENTRYPOINT ["/redis-server"]
来自ubuntu的

维护者“aosmith”
暴露6379
添加redis服务器/redis服务器
入口点[“/redis服务器”]

我认为scratch不依赖于任何东西,这就是为什么我要进行静态编译。此图像将为数百兆,而划痕图像只有~20mb。请小心过度优化。Docker是一个分层文件系统,无论有多少容器使用它,基本映像只会下载一次。这就是为什么“ubuntu”并不总是一个坏的选择(被很多项目使用)。还有一些较小的基础图像(如busybox或alpine),它们为您提供了一个简单的最小环境,这也是一个有效的选择。总之,“划痕”只适用于真正具有零依赖性的技术。很少有脚本语言可以轻易地归入这一类(Go是一个明显的例外)。@Mark OConnor我只想用Go或c/c++来尝试这一点。@AlexSmith理解,但显然redis的发布是在寻找一个它希望存在于目标环境中的文件。您的下一个工作将是查看此参考的源代码。你也可以看看Redis的人自己在用什么基本容器。啊,我应该包括这个。。。docker运行失败,因为它找不到入口点:
守护进程没有这样的文件或目录错误响应:无法启动容器d70e6f0fbc9965cf8c09c8c61d8e116c7e8b7ea9ee441783020acd297bbfc597:[8]系统错误:没有这样的文件或目录
我知道刮擦不依赖任何东西,这就是我正在进行静态编译的原因。此图像将为数百兆,而划痕图像只有~20mb。请小心过度优化。Docker是一个分层文件系统,无论有多少容器使用它,基本映像只会下载一次。这就是为什么“ubuntu”并不总是一个坏的选择(被很多项目使用)。还有一些较小的基础图像(如busybox或alpine),它们为您提供了一个简单的最小环境,这也是一个有效的选择。总之,“划痕”只适用于真正具有零依赖性的技术。很少有脚本语言可以轻易地归入这一类(Go是一个明显的例外)。@Mark OConnor我只想用Go或c/c++来尝试这一点。@AlexSmith理解,但显然redis的发布是在寻找一个它希望存在于目标环境中的文件。您的下一个工作将是查看此参考的源代码。你也可以看看Redis的人自己在用什么基本容器。啊,我应该包括这个。。。docker运行失败,因为它找不到入口点:
没有来自后台程序的此类文件或目录错误响应:无法启动容器d70e6f0fbc9965cf8c09c8c61d8e116c7e8b7ea9ee441783020acd297bbfc597:[8]系统错误:没有此类文件或目录