如何在docker中重写cmd?

如何在docker中重写cmd?,docker,Docker,我有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 &

我有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"]

如果需要运行多个命令,请尝试使用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"]

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