2017-01-18 2 views
0

С новым годом 2017!Открытие контейнера (Bluemix) для всего входящего соединения

Приветствую всех!

У меня есть некоторые проблемы, когда я пытаюсь развернуть мой Docker изображение в контейнере BlueMix (где cf ic run = docker run)
я не могу получить доступ к контейнеру из сети, даже если изображение работает хорошо внутри. я свистел в переплетены адрес:

ping 169.46.18.91 
PING 169.46.18.91 (169.46.18.91): 56 data bytes 
64 bytes from 169.46.18.91: icmp_seq=0 ttl=48 time=124.247 ms 
64 bytes from 169.46.18.91: icmp_seq=1 ttl=48 time=122.701 ms 

Изображение работал на местном уровне, но теперь, когда я дал ему IP и размещение его на bluemix службы контейнера, я сообщил о проблеме, в то время как изображение настройки после cf ic -v run команды

Вот журналы команды:

cf ic -v run -p 3000 --name bootingtest 1ed1b527771b 

DEMANDE : [2017-01-18T10:32:31+01:00] 
POST /UAALoginServerWAR/oauth/token HTTP/1.1 
Host: login.ng.bluemix.net 
Accept: application/json 
Authorization: [DONNEES PRIVEES MASQUEES] 
Connection: close 
Content-Type: application/x-www-form-urlencoded 
User-Agent: go-cli 6.22.2+a95e24c/darwin 

grant_type=refresh_token&refresh_token=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIwNzJlYTFmNy00NGRlLTRmYmYtODUxOS1lNmU0NmU2MTk1Y2ItciIsInN1YiI6ImZkMWVmM2Q3LTI2OTQtNDQ4Ni1iNjY2LWRmNTVjY2M4MzVmOCIsInNjb3BlIjpbIm9wZW5pZCIsInVhYS51c2VyIiwiY2xvdWRfY29udHJvbGxlci5yZWFkIiwicGFzc3dvcmQud3JpdGUiLCJjbG91ZF9jb250cm9sbGVyLndyaXRlIl0sImlhdCI6MTQ4NDczMTE3MSwiZXhwIjoxNDg3MzIzMTcxLCJjaWQiOiJjZiIsImNsaWVudF9pZCI6ImNmIiwiaXNzIjoiaHR0cHM6Ly91YWEubmcuYmx1ZW1peC5uZXQvb2F1dGgvdG9rZW4iLCJ6aWQiOiJ1YWEiLCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ1c2VyX25hbWUiOiJlbW1hbnVlbC5zb2xvbUBmci5pYm0uY29tIiwib3JpZ2luIjoidWFhIiwidXNlcl9pZCI6ImZkMWVmM2Q3LTI2OTQtNDQ4Ni1iNjY2LWRmNTVjY2M4MzVmOCIsInJldl9zaWciOiI2MWNkZjM4MiIsImF1ZCI6WyJjZiIsIm9wZW5pZCIsInVhYSIsImNsb3VkX2NvbnRyb2xsZXIiLCJwYXNzd29yZCJdfQ._gxevCN9cCYX3Fw_FUEYvxFsRhHqfOT9KhjZFiHcNao&scope= 

REPONSE : [2017-01-18T10:32:32+01:00] 
HTTP/1.1 200 OK 
Connection: close 
Transfer-Encoding: chunked 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate,no-store 
Content-Security-Policy: default-src 'self' www.ibm.com 'unsafe-inline'; 
Content-Type: application/json;charset=UTF-8 
Date: Wed, 18 Jan 2017 09:32:31 GMT 
Expires: 0 
Pragma: no-cache,no-cache 
Server: Apache-Coyote/1.1 
Strict-Transport-Security: max-age=2592000 ; includeSubDomains 
X-Backside-Transport: OK OK,OK OK 
X-Client-Ip: 91.151.65.169 
X-Content-Type-Options: nosniff 
X-Frame-Options: DENY 
X-Global-Transaction-Id: 1804077409 
X-Powered-By: Servlet/3.1 
X-Vcap-Request-Id: e683d47d-28aa-43c1-6356-d5818dfd86f1 
X-Xss-Protection: 1; mode=block 

6f6 
{"access_token":"[DONNEES PRIVEES MASQUEES]","token_type":"[DONNEES PRIVEES MASQUEES]","refresh_token":"[DONNEES PRIVEES MASQUEES]","expires_in":1209599,"scope":"cloud_controller.read password.write cloud_controller.write openid uaa.user","jti":"edcd9c51-4521-4f49-bf03-def030e81626"} 
0 


a9dc3ad4-1a34-4848-9b16-8d1410b79a06 

Так есть ли способ, чтобы установить соединение с «закрыто» состояния в «ожидании входящего соединения» состояние, когда я бегу или здание изображение?

Что-то вроде опции cf ic (docker) run -p 3000 --accept_all imageid cmd (Я не видел его в меню --help) или, может быть, вы что-то видели в другом месте?

Я думал о входе в контейнер с docker exec -it ID /bin/bash, но я не знаю команду Баша принимать все входящие соединения ... (и к тому же я считаю, что это Баш ВМ не сам контейнер)

Спасибо за ваши ответы и у вас хороший день!

Эммануэль


Другие информация о:

Dockerfile

FROM ubuntu:14.04 
RUN apt-get update && apt-get -y install python2.7 
RUN apt-get -y install python-pip 
RUN pip install Flask 
RUN pip install ibmiotf 
RUN pip install requests 
RUN pip install flask-socketio 
RUN pip install cloudant 
ENV PORT=12345 
EXPOSE 12345 
ADD ./SIARA /opt/SIARA/ 
WORKDIR /opt/SIARA/ 
CMD sleep 80 && python testGUI.py 

Колба отображение порта сервера и работает:

if __name__ == '__main__': 
    # Bind to PORT if defined, otherwise default to 5000. 
    port = int(os.environ.get('PORT', 5000)) 
    socketio.run(app, host='0.0.0.0', port=port) 

Улики

Я имел это предупреждающие сообщения, когда я использовал, чтобы проверить мое изображение на месте они не были ответственны любой аварии, но, возможно, сейчас это на облаке такого рода ошибки ответственны за неудачной попытки соединения из Интернета?

tl; dr: по-видимому, соединение SSH недоступно, поскольку (по-видимому) моя версия python (2.7) нуждается в обновлении (??) Но SSH не должны быть релевантными только в случае https: // связь?

cf ic logs -ft guiplay 

2017-01-19T09:17:38.870006264Z /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:334: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 
32017-01-19T09:17:38.870062551Z SNIMissingWarning 
�2017-01-19T09:17:38.870081733Z /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:132: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 
92017-01-19T09:17:38.870089026Z InsecurePlatformWarning 
�2017-01-19T09:17:39.145906849Z /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:132: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 
92017-01-19T09:17:39.145950355Z InsecurePlatformWarning 
�2017-01-19T09:17:39.186165706Z WebSocket transport not available. Install eventlet or gevent and gevent-websocket for improved performance. 
Y2017-01-19T09:17:39.192990810Z * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 

ответ

1

Хмм - Я вижу, что вы опубликовали порт 3000 (-р 3000 параметр в команде запуска), но по умолчанию порт будет 5000. В dockerfile, вы перешли, что 12345, так что предположительно, что вы на самом деле слушаете там. Угадав, что это причина, по которой вы хотите открыть все порты?

Docker предоставляет только порты, о которых вы говорите, - добавление дополнительного -p 5000 для этого значения по умолчанию или -p 12345 в соответствии с этим файлом Docker, или оба должны позволять вам подключаться к приложению в этих случаях. Или, если вы хотите просто опубликовать все порты, EXPOSEd через Dockerfile (в этом случае это будет 12345), используйте параметр -P.

Дополнительная информация: выполняется в облаке, есть дополнительная безопасность, которую ваш контейнер доступен только через порты, которые вы хотите опубликовать. В пределах пространства (в приватных ips из других контейнеров в одном и том же пространстве или, определенно, из самого контейнера), вы все равно должны иметь доступ к этим портам. Однако из внешних доступны только доступные вами порты. Я не вижу возможности эффективно опубликовать * (и, похоже, это довольно спорная практика с точки зрения безопасности)

+0

Спасибо за ваш ответ N Fritze! Я использовал, чтобы выставлять тот же порт в моем файле docker, моем сервере и в команде, но это не сработало, но возможно, что это было что-то еще, что было неправильно, я поддерживаю вас на связи! Очень хороший ответ на учёт ^^ Еще раз спасибо – Manu

+0

Я обновил сообщение, так как кажется, что он не приходит из порта, экспонирующего (но я думаю, что вы сказали мне правильный способ сделать это, и это сделано сейчас: D) Я добавил подсказки, возможно, нерелевантная проблема на локальном уровне, но это может вызвать проблемы однажды в облаке, похоже ли это на проблему? (предупреждения SSH) – Manu

+0

А также: даже с проблемой, упомянутой выше, контейнер уже работал 1 раз на bluemix, вот почему я так запутался, я решаю проблемы шаг за шагом и когда я их нашел, но факт, что он уже так много трудился! – Manu

0

Похоже, что обслуживание одного контейнера Bluemix немного трогательно, его трудно было достать из сети до тех пор, пока я добавлен «масштабируемый» контейнер, который запрашивает требуемый HTTP-порт.

Я думаю, проблема в том, что этот порт http не был открыт, но теперь проблема решена так, как я сказал выше.

Смежные вопросы