2016-04-02 15 views
0

Ich arbeite in einem Basis Docker Container für Symfony Entwicklung. Ich verwende Docker Toolset für Windows. Hier ist meine Dockerfile:Docker Container funktioniert nicht richtig

FROM  centos:6.7 
MAINTAINER Reynier Perez <[email protected]> 

# basic env fix 
ENV    TERM xterm 

# Install REMI and EPEL repos 
RUN  yum update -y 
RUN  yum install -y mc wget yum-utils htop nano curl git 
RUN  wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm \ 
     && wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm \ 
     && rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm 

RUN  yum-config-manager --enable remi-php70 
RUN  yum install -y php \ 
         php-common \ 
         php-cli \ 
         php-gd \ 
         php-intl \ 
         php-mbstring \ 
         php-mcrypt \ 
         php-opcache \ 
         php-pdo \ 
         php-pear \ 
         php-pecl-apcu \ 
         php-imagick \ 
         php-pecl-xdebug \ 
         php-xml \ 
         php-mysqlnd \ 
         php-soap \ 
         php-pdo-dblib 

RUN   curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer 
RUN   curl -LsS http://symfony.com/installer -o /usr/local/bin/symfony && chmod a+x /usr/local/bin/symfony 

# Configure Services 
# Create a copy of default files and remove them 
# Apache 
RUN   cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default 
RUN   rm -f /etc/httpd/conf/httpd.conf 
ADD   httpd.conf /etc/httpd/conf/ 
# Add default VirtualHost 
ADD   vhost.conf /etc/httpd/conf.d/ 
#PHP 
RUN   cp /etc/php.ini /etc/php.ini.default 
RUN   rm -f /etc/php.ini 
ADD   php.ini /etc/ 
# Add PHP info default script 
ADD   info.php /var/www/html 
# Setup permissions 
RUN   chown -R apache:root /var/www/html && \ 
      find /var/www/html -type d -print0 | xargs -0 chmod 2775 && \ 
      find /var/www/html -type f -print0 | xargs -0 chmod 0664 

# Mount Volumes 
VOLUME  /var/www/html 
WORKDIR  /var/www/html 

EXPOSE  80 

CMD   service httpd restart 

Wenn ich die Maschine bauen mit:

docker build --tag=symfony-dev . 

ich diese Nachricht erhalten:

Successfully built c7bc46e1f84c 
SECURITY WARNING: You are building a 
Docker image from Windows against a non-Windows Docker host. All files 
and directories added to build context will have '-rwxr-xr-x' 
permissions. It is recommended to double check and reset permissions 
for sensitive files and directories. 

Der nächste Schritt ist, den Behälter laufen mit:

docker run symfony-dev 

Dann versuche ich zu sehen die Informationen für diesen Container:

docker inspect symfony-dev 

Und ich habe eine JSON wie folgt aus:

[ 
    { 
     "Id": "sha256:c7bc46e1f84c6d1a543c515d134184486dcb0e3e81c81f269ff1bb10791a3c9e", 
     "RepoTags": [ 
      "symfony-dev:latest" 
     ], 
     "RepoDigests": [], 
     "Parent": "sha256:db8021c4307e547ae7fee4afd3b964e72fde6422dbb8a5292b4bf441beb7d0b4", 
     "Comment": "", 
     "Created": "2016-04-02T02:16:45.891399606Z", 
     "Container": "e02be1ee3e12ef79bff0c0bbb7b7751f7368d5c06872df37a58439d21d69d57f", 
     "ContainerConfig": { 
      "Hostname": "72ba20be3774", 
      "Domainname": "", 
      "User": "", 
      "AttachStdin": false, 
      "AttachStdout": false, 
      "AttachStderr": false, 
      "ExposedPorts": { 
       "80/tcp": {} 
      }, 
      "Tty": false, 
      "OpenStdin": false, 
      "StdinOnce": false, 
      "Env": [ 
       "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
       "TERM=xterm" 
      ], 
      "Cmd": [ 
       "/bin/sh", 
       "-c", 
       "#(nop) CMD [\"/bin/sh\" \"-c\" \"service httpd restart\"]" 
      ], 
      "ArgsEscaped": true, 
      "Image": "sha256:db8021c4307e547ae7fee4afd3b964e72fde6422dbb8a5292b4bf441beb7d0b4", 
      "Volumes": { 
       "/var/www/html": {} 
      }, 
      "WorkingDir": "/var/www/html", 
      "Entrypoint": null, 
      "OnBuild": [], 
      "Labels": { 
       "License": "GPLv2", 
       "Vendor": "CentOS" 
      } 
     }, 
     "DockerVersion": "1.10.3", 
     "Author": "Reynier Perez \[email protected]\u003e", 
     "Config": { 
      "Hostname": "72ba20be3774", 
      "Domainname": "", 
      "User": "", 
      "AttachStdin": false, 
      "AttachStdout": false, 
      "AttachStderr": false, 
      "ExposedPorts": { 
       "80/tcp": {} 
      }, 
      "Tty": false, 
      "OpenStdin": false, 
      "StdinOnce": false, 
      "Env": [ 
       "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", 
       "TERM=xterm" 
      ], 
      "Cmd": [ 
       "/bin/sh", 
       "-c", 
       "service httpd restart" 
      ], 
      "ArgsEscaped": true, 
      "Image": "sha256:db8021c4307e547ae7fee4afd3b964e72fde6422dbb8a5292b4bf441beb7d0b4", 
      "Volumes": { 
       "/var/www/html": {} 
      }, 
      "WorkingDir": "/var/www/html", 
      "Entrypoint": null, 
      "OnBuild": [], 
      "Labels": { 
       "License": "GPLv2", 
       "Vendor": "CentOS" 
      } 
     }, 
     "Architecture": "amd64", 
     "Os": "linux", 
     "Size": 756378663, 
     "VirtualSize": 756378663, 
     "GraphDriver": { 
      "Name": "aufs", 
      "Data": null 
     } 
    } 
] 

Aber wo ist die IP-Adresse? Wie erreiche ich den Apache auf diesem Container? Wenn ich den Befehl ps wie folgt ausführen:

docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

Ich habe keine Container ausgeführt, warum? Ich vermisse etwas hier?

UPDATE

Nach @ cricket_007 Vorschlag Ich habe die httpd_foreground wie in offiziellen Dockerfile für Apache hinzugefügt und jetzt sah ich den Behälter laufen, wenn ich docker ps laufen, aber ich bin immer noch ein paar Probleme mit:

  • Wenn ich den Container ausführen, um in bash als docker run -it --name=symfony symfony-dev bash bekommen, habe ich diesen Fehler: new state of nil is invalid, die ich nicht wissen, wie zu beheben.
  • In der anderen Seite I 172.17.0.2 als IP-Adresse sähe, aber ich bin nicht in der Lage es als Apache Bedeutung zu erreichen http://172.17.0.2/info.php Ich habe ein paar verdächtig bezüglich firewalld und/oder SELinux, aber ich bin nicht sicher,

Kann ich zu diesen beiden Fragen einen Rat bekommen?

Antwort

1

Ihr Container wird gelöscht, nachdem er gestartet wurde, da Ihr Befehl service httpd restart keinen Vordergrundprozess geöffnet hält.

Sie könnten tail -f die Apache Log-Datei, zum Beispiel als CMD und verwenden Sie RUN für den Neustart des Servers wie Sie derzeit sind.

+0

Sie meinen hinzufügen 'RUN tailf/etc/http/logs/XXXXXX.log'? – ReynierPM

+0

Nicht als RUN, nein. Wie das CMD –

+0

Eigentlich das offizielle Apache-Image verwendet 'exec httpd -DFOREGROUND', hier ist das Skript in CMD verwendet https://github.com/docker-library/httpd/blob/bc72e42914f671e725d85a01ff037ce87c827f46/2.4/httpd-foreground –