2016-04-23 17 views
17

पर अस्वीकार कर दिया गया है मैं डॉकर के लिए नया हूं और डेमो रेल ऐप बनाने की कोशिश कर रहा हूं।कनेक्शन डॉकर कंटेनर

FROM ruby:2.2 
MAINTAINER [email protected] 

# 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"] 

मैं तो इतना है कि यह बनाया गया:: मैं एक dockerfile कि इस तरह दिखता है बना

docker build -t demo . 

और एक कमांड फोन सर्वर जो पोर्ट 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 

मैं तो करने के लिए नेविगेट करने के लिए सही आईपी पता लगाने की कोशिश:

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

मैं http://192.168.99.100:8080 पर नेविगेट करता हूं और त्रुटि प्राप्त करता हूं यह साइट 1 9 2.168.99.100 तक पहुंचने से इंकार कर सकती है।

मैं गलत क्या कर सकता था?

-पी (अपर केस) या --publish-सब कि डोकर बता अपने मेजबान से यादृच्छिक बंदरगाहों का उपयोग करें और उन्हें मैप करने के लिए होगा:

+0

पर मैप किए गए प्रकाशित विकल्प के साथ कंटेनर चलाने का प्रयास करें। डॉकर रन-डेमो - 8080: 8080 –

+0

धन्यवाद, @jozef, लेकिन मुझे "डॉकर: डिमन से त्रुटि प्रतिक्रिया मिलती है: कंटेनर कमांड '- प्रकाशित करें' नहीं मिला है या मौजूद नहीं है .." – jdkealy

उत्तर

18

आप निम्न विकल्पों का उपयोग कर अवगत कराया बंदरगाहों प्रकाशित करने की जरूरत खुला कंटेनर बंदरगाहों।

-p (छोटे अक्षर) या --publish = [] कि डोकर बता बंदरगाहों आप मैन्युअल रूप से सेट का उपयोग करें और उन्हें अवगत कराया कंटेनर की बंदरगाहों के लिए मैप करने के लिए होगा।

दूसरा विकल्प पसंदीदा है क्योंकि आप पहले ही जानते हैं कि कौन से बंदरगाह मैप किए गए हैं। यदि आप पहले विकल्प का उपयोग करते हैं तो आपको docker inspect demo पर कॉल करना होगा और पोर्ट्स अनुभाग पर अपने होस्ट से कौन से यादृच्छिक बंदरगाहों का उपयोग किया जा रहा है, इसकी जांच करनी होगी।

docker run -it -p 8080:8080 demo 

के बाद कि आपकी यूआरएल काम करेगा:

बस निम्न कमांड चलाएं।

9

आप डोकर टूलकिट का उपयोग कर रहे हैं घर पर खिड़की 10 आप डोकर मशीन आईपी आदेश के माध्यम से वेबपेज तक पहुँचने की जरूरत होगी। यह आमतौर पर 1 9 2.168.99.100:

यह माना जाता है कि आप नीचे की तरह कमांड कमांड के साथ चल रहे हैं।

docker run -it -p 8080:8080 demo 
विंडो 10 प्रो संस्करण के साथ

आप स्थानीय होस्ट या इसी लूपबैक 127.0.0.1:8080 आदि (बिलाव या जो भी आप चाहें तो) के साथ उपयोग कर सकते हैं। ऐसा इसलिए है क्योंकि आपके पास वर्चुअल बॉक्स नहीं है और डॉकर सीधे विंडो हाइपर वी पर चल रहा है और लूपबैक सीधे पहुंच योग्य है।

मेजबान फ़ाइल को किसी भी digression के लिए विंडो में सत्यापित करें। इसमें 127.0.0.1 स्थानीयहोस्ट

+0

आपको बहुत धन्यवाद सर ! यह मुझे एक टन बचाता है! – zsljulius

+0

@ zsljulius अच्छा है कि यह आपकी मदद करता है। –

संबंधित मुद्दे