【问题标题】:Unable to start Docker example w/apache-php [duplicate]无法使用 apache-php 启动 Docker 示例 [重复]
【发布时间】:2019-11-26 06:40:06
【问题描述】:

我正在关注关于 Docker 的 tutorial。我在 Windows 上运行,所以我已经安装了 Docker for Windows 并注册了 Hub。

目前我正在 Docker 上创建我的第一个 Apache 实例。

按照教程,我创建了debian 衍生的第一个 Dockerfile 并运行了容器。我的输出与教程一致(> 表示 Windows 提示符)

> docker run -it --name mydebian_container  mydebian
root@ef9eb174874a:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 02:43 pts/0    00:00:00 bash
root         9     1  0 02:43 pts/0    00:00:00 ps -ef

然后我按照从容器运行 Apache 的教程进行操作

Dockerfile

FROM debian
RUN apt-get update &&\
    apt-get -y install procps libapache2-mod-php
CMD service apache2 start

很酷,是吗?但是当我运行容器时没有任何反应,容器本身成功退出

D:\IdeaDevOps\dockers\apache2>docker run -it --name apache2  -v d:\IdeaDevOps\dockers\apache2:/var/www/html  debian_apache2
[....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
. ok


>docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
09d5b4b3fa49        debian_apache2      "/bin/sh -c 'service…"   24 seconds ago      Exited (0) 22 seconds ago                       apache2
8d1c4522aa30        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                          elated_wing
ae769d388b36        ubuntu              "bash"                   2 hours ago         Exited (0) 2 hours ago                          kind_murdock
5596841696f6        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                          festive_booth

我真的不明白为什么它无法保持运行的 Apache 服务器。 AH00558 是一个警告,它永远不会阻止 Apache 启动。 我的笔记本电脑上有一个正在运行的 Apache 2.4 实例,正在监听 80,所以我停止了与其相关的 Windows 服务。

我还尝试更改 Docker 中的端口绑定,或者不将任何端口绑定 (-p) 传递给 Docker 以查看会发生什么。

如您所见,我不是故意运行容器 -d(与链接教程不同)来查看其输出。

是什么阻止了基于 Apache 的容器启动?我对运行真正的 Apache/php 并不是很感兴趣,但我只想熟悉 Docker 以及如何根据您的需要自定义映像。 TL;DR 我正在学习,现在没有真正的业务需求。

更新

我尝试使用雷神之锤的方法。如果我坚持做docker start apache2,我只能让Apache 服务器存活几秒钟,这只是在我的浏览器上浏览根目录的时间。服务器最终结束

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker start apache2
apache2

D:\IdeaDevOps\dockers\apache2>docker exec apache2 bash

D:\IdeaDevOps\dockers\apache2>docker exec apache2 bash

D:\IdeaDevOps\dockers\apache2>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
c669aacbed7a        debian_apache2      "/bin/sh -c 'service…"   20 minutes ago      Up 17 seconds       0.0.0.0:80->80/tcp   apache2

D:\IdeaDevOps\dockers\apache2>docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
c669aacbed7a        debian_apache2      "/bin/sh -c 'service…"   20 minutes ago      Exited (1) 1 second ago                       apache2
8d1c4522aa30        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                        elated_wing
ae769d388b36        ubuntu              "bash"                   2 hours ago         Exited (0) 2 hours ago                        kind_murdock
5596841696f6        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                        festive_booth

D:\IdeaDevOps\dockers\apache2>docker ps --all
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
c669aacbed7a        debian_apache2      "/bin/sh -c 'service…"   21 minutes ago      Exited (1) 23 seconds ago                       apache2
8d1c4522aa30        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                          elated_wing
ae769d388b36        ubuntu              "bash"                   2 hours ago         Exited (0) 2 hours ago                          kind_murdock
5596841696f6        mydebian            "bash"                   2 hours ago         Exited (0) 2 hours ago                          festive_booth

【问题讨论】:

标签: docker


【解决方案1】:

一个 docker 容器需要一个进程来保持运行。

当你运行“service apache2 start”时,服务启动,就这样,容器停止。

所以你应该使用一个持续运行的命令,比如:apachectl -D FOREGROUND

【讨论】:

  • 以重复方式结束投票然后提供答案的意义何在?
  • @leopal 正如你所说:这是投票。也许它不是重复的,在这种情况下我有一个答案......
  • 我回答是为了帮助提问者快速确定解决方案,然后我会投票支持以 dup 的身份结束,但你为我做了。无论如何,我相信它确实是重复的。
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2023-03-28
  • 2012-10-16
相关资源
最近更新 更多