【问题标题】:How to map gdate to date in a docker alpine container / busybox?如何在 docker alpine 容器/busybox 中将 gdate 映射到日期?
【发布时间】:2018-03-23 16:14:30
【问题描述】:

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

FROM centos:7

RUN yum -q -y install openssl && \
  ln -s /usr/bin/date /bin/gdate

证书的检查是通过在 macos 上开发的 shell 脚本完成的。因此我需要将gdate 映射到date,因为gdate 仅在macos 上可用,而在centos 上不可用。

这个容器非常大,大约有 200MB。我已经尝试了alpine 图像和映射gdate 那里:

FROM alpine

RUN apk update && \
  apk add --no-cache openssl && \
  rm -rf /var/cache/apk/* && \
  ln -s /bin/date /bin/gdate

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

/ # gdate
gdate: applet not found

如何在 docker alpine 容器/busybox 中将gdate 映射到date

【问题讨论】:

    标签: docker busybox alpine


    【解决方案1】:

    您创建符号链接的方式在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 映射到date,请创建一个名为gdate 的shell 脚本,其内容如下:

    #!/bin/sh
    busybox date
    

    并使其可执行。然后在你的 Dockerfile 中,COPY 到镜像中:

    FROM alpine
    
    RUN apk update && \
    apk add --no-cache openssl && \
    rm -rf /var/cache/apk/*
    
    COPY gdate /bin/
    

    然后构建。

    【讨论】:

    • 谢谢。如何将脚本内联添加到 Dockerfile?我不知道如何逃避#!/bin/sh。我试过echo "#!/bin/sh\n busybox date" > /bin/date",但它在第一行之后就中断了
    • 它是在 Dockerfile 之外创建的。在 Dockerfile 我只是复制它。
    • 我知道,但我宁愿将所有内容都放在 dockerfile 中,而不是两个文件。
    • 试试RUN printf "#!/bin/sh\nbusybox date\n" > /bin/date。我已经在我的 Mac 上进行了测试。
    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 2017-10-23
    • 2020-06-17
    • 2017-07-05
    • 2017-09-11
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    相关资源
    最近更新 更多