无法在 dockerfile 中 运行 CMD - DOCKER

Not able to run CMD in dockerfile - DOCKER

我正在使用 docker 文件创建图像我希望每次 docker 容器启动时,ssh 连接也应该启动,然后 ngrok 也应该启动,但我无法使用CMD命令,请大家帮帮我。

FROM ubuntu
ENTRYPOINT  echo "Entering......"; bin/bash; ngrok tcp 22
RUN apt-get update
RUN apt-get install curl -y
RUN apt-get install openssh-server -y
RUN curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | tee /etc/apt/sources.list.d/ngrok.list && apt update && apt-get install ngrok  
RUN ngrok authtoken 25dYasdvM3C1IkDtT9QEG7ZwIWw_59Ar5Hp4NcrusbyVAu6Sv
CMD echo "SSH starting"
CMD service ssh start
CMD echo "SSH started"
CMD echo "started creating log file"
CMD echo "file created!!"
CMD ngrok tcp 22 --log=stdout > ngrok.log &
CMD echo "log file created"
CMD touch hello.txt
CMD echo "simple file created"
CMD echo "log file created and esatablished network successully"
CMD echo "working fine"
CMD echo "Starting!!!!"

要使用多个启动命令,您需要使用 & 将它们连接在一起,或者创建一个可执行文件,如下所示: Dockerfile:

...
CMD /start.sh

start.sh:

#!/bin/bash
service ssh start
ngrok tcp 22 --log=stdout > ngrok.log
....

确保最后一个命令没有退出,否则容器也会关闭。 运行 多个命令存在问题,例如您无法使用 运行 命令中的“docker 日志”获取日志,只有最后一个可执行文件等

只能是一个CMD命令,如果我们在docker文件中提供多个命令,最后一个将生效。 https://docs.docker.com/engine/reference/builder/#cmd