Comment utiliser le conteneur docker en tant que serveur apache?
J'ai juste commencé à l'aide de docker et de suivi tutoriel suivant: https://docs.docker.com/engine/admin/using_supervisord/
FROM ubuntu:14.04
RUN apt-get update && apt-get upgrade
RUN apt-get install -y openssh-server apache2 supervisor
RUN mkdir -p /var/lock/apache2 /var/run/apache2 /var/run/sshd /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
EXPOSE 22 80
CMD ["/usr/bin/supervisord"]
et
[supervisord]
nodaemon=true
[program:sshd]
command=/usr/sbin/sshd -D
[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
Construire et exécuter:
sudo docker build -t <yourname>/supervisord .
sudo docker run -p 22 -p 80 -t -i <yourname>/supervisord
Ma question est, quand le panneau fonctionne sur mon serveur avec IP http://88.xxx.x.xxx/comment puis-je accéder à l'apache localhost marche à l'intérieur du conteneur docker à partir du navigateur sur mon ordinateur? Je voudrais utiliser un conteneur docker comme un serveur web.
source d'informationauteur Lost in OWL
Vous devez vous connecter pour publier un commentaire.
Vous devrez utiliser la redirection de port pour être en mesure d'accéder à votre conteneur docker du monde extérieur.
De la Docker docs:
Donc, qu'est-ce que cela signifie? Vous devez spécifier un port sur votre machine hôte (généralement le port 80) et de transmettre toutes les connexions sur ce port pour le conteneur docker. Puisque vous êtes en cours d'exécution d'Apache dans votre conteneur docker, vous voudrez probablement avant la connexion au port 80 sur le conteneur docker.
C'est mieux de le faire via le
-p
option pour ledocker run
commande.La partie de la commande qui dit
-p 80:80
signifie que vous rediriger le port 80 de l'hôte sur le port 80 sur le conteneur.Lorsque cela est configuré correctement, vous pouvez utiliser un navigateur pour surfer sur http://88.x.x.x et la connexion sera transmis au conteneur comme prévu.
La Docker docs décrit les
-p
option à fond. Il ya quelques façons de spécifier le drapeau:Edit: Lorsque cette question a été posté il n'y a pas de religion d'conteneur docker pour le serveur web Apache. Maintenant, une version existe.
La façon la plus simple pour obtenir Apache et en cours d'exécution est d'utiliser le officiel de conteneurs Docker. Vous pouvez le démarrer à l'aide de la commande suivante:
De cette façon, il vous suffit de monter un dossier sur votre système de fichiers de sorte qu'il est disponible dans le conteneur docker et votre port de l'hôte est transmise au port à conteneurs, comme décrit ci-dessus.
Il ya une image officielle pour apache. L'image de la documentation contient des instructions sur la façon dont vous pouvez utiliser ces images officielles comme une base pour une image personnalisée.
Pour voir comment c'est fait prendre un coup d'oeil à la Dockerfile utilisé par l'image officielle:
https://github.com/docker-library/httpd/blob/master/2.4/Dockerfile
Exemple
S'assurer que les dossiers sont accessibles à la racine
Host ces fichiers à l'aide officielle docker image
Fichiers sont accessibles sur le port 80.