使用 -it 选项时 Docker 容器退出

标签 docker dockerfile

考虑以下 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> 运行容器时,容器将启动并保持运行,允许按预期从主机在 https://localhost:8080 上访问默认的 Apache 网页。但是,使用此运行命令,我无法使用 Ctrl+C 退出容器,这也符合预期,因为容器未使用 -it 选项启动。现在,如果将 -it 选项添加到 run 命令中,则容器在启动后立即退出。这是为什么?是否有一种优雅的方式让 apache 在退出 Ctrl+C 时在前台运行?

最佳答案

您需要做的就是将 -d 选项传递给运行命令:

docker run -d -p 8080:80 my-container

关于使用 -it 选项时 Docker 容器退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086606/

相关文章:

mysql - 在 docker-compose 中执行 mysql 命令时出错

docker - sed 操作在 Dockerfile 中被覆盖

docker - 我可以通过 172.17.42.1 从 docker 容器连接到主机吗?

docker - 如何将特定 IP 分配给容器并使其可在 VM 主机之外访问?

docker - 如何使用 Jenkins docker-swarm-plugin 使用 docker image jenkins/jnlp-slave(传递代理名称)

amazon-web-services - cloudwatch 中的 Docker 容器统计信息

postgresql - 从主机连接到 docker 容器中的 postgres

docker 无法访问 API dotnet

docker - 如何查看容器的日志?

mysql - 如何使MYSQL在Docker运行时启动并在Dockerfile中创建mysql用户