无法启动Docker示例w / apache-php

时间:2019-07-17 12:18:54

标签: docker

我正在关注tutorial关于Docker。我在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

1 个答案:

答案 0 :(得分:1)

泊坞窗容器需要暂停进程以保持运行状态。

当您运行“ service apache2 start”时,该服务即已启动,容器即已停止。

因此,您应该使用不断运行的命令,例如:apachectl -D FOREGROUND