【问题标题】:How to override cmd in docker?如何在docker中覆盖cmd?
【发布时间】:2019-10-28 03:29:38
【问题描述】:

我有 dockerfile

CMD [ "/run/myfile.sh" ]

我建造它

docker build . -t myRepo/test/my-app:1.0.0

并运行它

docker run -it --rm myRepo/test/my-app:1.0.0 sh 

如果我想用更多参数更改 CMD 我该怎么做? 例如我想创建文件夹

   command: ["/bin/sh"]
    args: [ "-c", "mkdir -p /myfolder/sub && mkdir -p /myfolder2/sub2"]

我试过了

docker run -it --rm myRepo/test/my-app:1.0.0 sh [ "-c", "mkdir -p /myfolder/sub && mkdir -p /myfolder2/sub2"]

【问题讨论】:

  • 您已经在 docker run 命令末尾使用 sh 覆盖了 CMD 的值。 JSON 语法在命令行中不起作用,只需像在命令行中一样输入,就像不在容器中一样。

标签: docker


【解决方案1】:

如果您需要运行多个命令,请尝试使用 entrypoint.sh

只需创建一个shell脚本,例如:

#!/bin/sh
mkdir -p /foo/bar
mkdir -p /foo2/bar2
#whatever

然后编辑你的 Dockerfile:

COPY entrypoint.sh /usr/local/bin/

CMD ["entrypoint.sh"]

但我不确定你的情况,在RUN 命令中创建目录更好,而不是CMD

FROM centos:7

RUN mkdir -p /foo/bar/ && mkdir -p /foo2/bar2/
RUN ...
COPY entrypoint.sh /usr/local/bin/
CMD ["entrypoint.sh"]

【讨论】:

    猜你喜欢
    • 2022-12-14
    • 2023-03-11
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多