如何将gdate映射到docker alpine容器/busybox中的日期?

如何将gdate映射到docker alpine容器/busybox中的日期?,docker,busybox,alpine,Docker,Busybox,Alpine,我创建了一个Centos7 docker容器,用于检查某些证书的到期日期 FROM centos:7 RUN yum -q -y install openssl && \ ln -s /usr/bin/date /bin/gdate 证书的检查由macos上开发的shell脚本完成。因此,我需要将gdate映射到最新版本,因为gdate仅在macos上可用,而在centos上不可用 这个容器相当大,大约有200MB。我试过阿尔卑斯山的图片和格达特地图: 在alpine容器

我创建了一个Centos7 docker容器,用于检查某些证书的到期日期

FROM centos:7

RUN yum -q -y install openssl && \
  ln -s /usr/bin/date /bin/gdate
证书的检查由macos上开发的shell脚本完成。因此,我需要将gdate映射到最新版本,因为gdate仅在macos上可用,而在centos上不可用

这个容器相当大,大约有200MB。我试过阿尔卑斯山的图片和格达特地图:

在alpine容器内进行测试时,我得到:

/ # gdate
gdate: applet not found

如何将gdate映射到docker alpine容器/busybox中的日期?

创建符号链接的方式在busybox中不起作用。如果在容器中运行ls-l/bin,您将看到一些奇怪的情况,如:

lrwxrwxrwx    1 root     root            12 Jan  9 19:37 ash -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Jan  9 19:37 base64 -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Jan  9 19:37 bbconfig -> /bin/busybox
-rwxr-xr-x    1 root     root        805024 Dec 12 10:42 busybox
lrwxrwxrwx    1 root     root            12 Jan  9 19:37 cat -> /bin/busybox
lrwxrwxrwx    1 root     root            12 Jan  9 19:37 chgrp -> /bin/busybox
...
除/bin/busybox之外的每个文件本身都是指向/bin/busybox文件的符号链接

您可以看到文件busybox是某种命令多路复用器。运行date命令时,实际上是在运行busybox date

要将gdate映射到日期,请创建一个名为gdate的shell脚本,该脚本包含以下内容:

#!/bin/sh
busybox date
并使其可执行。然后在Dockerfile中,将其复制到图像:

FROM alpine

RUN apk update && \
apk add --no-cache openssl && \
rm -rf /var/cache/apk/*

COPY gdate /bin/

和建造。

谢谢。如何将脚本内联添加到Dockerfile?我不知道怎么爬/垃圾箱/垃圾箱。我试过回声/bin/sh\n busybox date>/bin/date,但它在Dockerfile外部创建的第一行之后中断。在Dockerfile中,我只是复制它。我知道,但我更希望所有文件都在Dockerfile中,而不是有两个文件。尝试运行printf/bin/sh\nbusybox日期\n>/bin/date。我已经在我的Mac电脑上测试过了。
FROM alpine

RUN apk update && \
apk add --no-cache openssl && \
rm -rf /var/cache/apk/*

COPY gdate /bin/