无法在 dockerfile 中运行 CMD - DOCKER [重复]

问题描述 投票:0回答:2

我正在使用 dockerfile 创建一个镜像,我希望每次 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!!!!"
docker dockerfile docker-cmd
2个回答
0
投票

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

...
CMD /start.sh

开始.sh:

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.