77 votes

Connexion refusée sur le conteneur Docker

Je suis nouveau sur Docker et d'essayer de faire une démo application Rails. J'ai fait un dockerfile qui ressemble à ceci:

FROM ruby:2.2
MAINTAINER marko@codeship.com

# Install apt based dependencies required to run Rails as 
# well as RubyGems. As the Ruby image itself is based on a 
# Debian image, we use apt-get to install those.
RUN apt-get update && apt-get install -y \
build-essential \
nodejs

    # Configure the main working directory. This is the base 
    # directory used in any further RUN, COPY, and ENTRYPOINT 
    # commands.
RUN mkdir -p /app
WORKDIR /app

    # Copy the Gemfile as well as the Gemfile.lock and install 
    # the RubyGems. This is a separate step so the dependencies 
    # will be cached unless changes to one of those two files 
    # are made.
COPY Gemfile Gemfile.lock ./
RUN gem install bundler && bundle install --jobs 20 --retry 5

# Copy the main application.
COPY . ./

# Expose port 8080 to the Docker host, so we can access it 
# from the outside.
EXPOSE 8080

# The main command to run when the container starts. Also 
# tell the Rails dev server to bind to all interfaces by 
# default.
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "8080"]

J'ai ensuite construit de la sorte:

docker build -t demo . 

Et d'appeler une commande pour démarrer le serveur qui fait démarrer le serveur sur le port 8080:

Johns-MacBook-Pro:demo johnkealy$ docker run -it demo
=> Booting WEBrick
=> Rails 4.2.5 application starting in development on http://0.0.0.0:8080
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-23 16:50:34] INFO  WEBrick 1.3.1
[2016-04-23 16:50:34] INFO  ruby 2.2.4 (2015-12-16) [x86_64-linux]
[2016-04-23 16:50:34] INFO  WEBrick::HTTPServer#start: pid=1 port=8080

J'ai ensuite essayer de trouver l'adresse IP correcte pour accéder à:

Johns-MacBook-Pro:demo johnkealy$ docker-machine ip default
192.168.99.100

Je navigue à http://192.168.99.100:8080 et obtenez le message d'erreur de Ce site ne peut pas être atteint 192.168.99.100 a refusé de se connecter.

Que pouvais-je fait de mal ?

71voto

CodeNotFound Points 595

Vous avez besoin de publier les ports exposés en utilisant l'une des options suivantes:

-P (majuscule) ou --publier tous qui dira le Panneau à l'utilisation des ports aléatoires à partir de votre hôte et à la carte à l'exposé de conteneurs des ports.

-p (minuscules) ou --publier=[] qui dira le Panneau d'utiliser les ports vous définissez manuellement et de les mapper à l'exposé de conteneurs des ports.

La seconde option est préférable, parce que vous savez déjà quels ports sont mappés. Si vous utilisez la première option, alors vous aurez besoin de faire appel docker inspect demo et de vérifier les ports aléatoires sont utilisés à partir de votre hôte à l' Ports de la section.

Il suffit d'exécuter la commande suivante:

docker run -it -p 8080:8080 demo

Après que votre url de travail.

41voto

vimal krishna Points 31

Si vous utilisez le Panneau trousse d'outils sur la fenêtre de 10 à la maison , vous aurez besoin pour accéder à la page web par le biais de docker-ip de l'appareil de commande. Il est généralement 192.168.99.100:

Il est supposé que vous êtes en cours d'exécution avec la commande publier comme ci-dessous.

docker run -it -p 8080:8080 demo

Avec Fenêtre de 10 version pro, vous pouvez accéder à localhost ou correspondant de bouclage 127.0.0.1:8080 etc (Tomcat ou ce que vous voulez). C'est parce que vous n'avez pas une boîte virtuelle là et docker est en cours d'exécution directement sur la Fenêtre d'Hyper-V et de bouclage est directement accessible.

Vérifier le fichier hosts dans la fenêtre pour toute digression. Il devrait avoir 127.0.0.1 mappé à localhost

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X