考虑以下Dockerfile:
FROM ubuntu:16.04
RUN apt-get update && \
apt-get install -y apache2 && \
apt-get clean
ENTRYPOINT ["apache2ctl", "-D", "FOREGROUND"]
当使用命令
docker run -p 8080:80 <image-id>
运行容器时,容器将启动并保持运行状态,从而可以在主机上按预期访问默认的Apache网页https://localhost:8080
。然而,使用此运行命令时,我无法使用Ctrl+C
退出容器,这也是预期的,因为容器没有使用-it
选项启动。现在,如果将-it
选项添加到运行命令中,则容器在启动后立即退出。为什么会这样?是否有一种优雅的方式使Apache在前台运行并在Ctrl+C
上退出?
CMD
而不是ENTRYPOINT
吗?另外,你知道-it
不是一个命令,而是两个命令-i
和-t
吗? - mad.meeshdocker run --rm -it image-id
命令,容器会一直运行,直到我使用 CTRL+C 发送 INT 信号。我的 Docker 版本是Docker version 17.09.1-ce, build 19e2cf6
。 - Stephen CrosbyDocker version 17.12.0-ce, build c97c6d6
。明天我得检查一下在工作中遇到问题的那台机器上我运行的是哪个版本。 - Sam Herrmanndocker inspect
命令输出? - BMitch