Вот моя архитектура:
У меня есть два контейнера (A и B), работающие на одном хосте со своей собственной сетью.
docker-compose:
version : '3'
services:
A:
build: ./docker_A
ports:
- "8090:8090"
networks:
- my_network
B:
build: ./docker_B
ports:
- "8070:8070"
networks:
- my_network
networks:
my_network:
driver : bridge
Контейнер b работает на бутылочном сервере :
@get('/')
def hello():
return {"say":"Hello world"}
run(host='0.0.0.0', port=8070, debug=True)
docker inspect package_name_my_network
возвращает:
{
"Name": "package_name_my_network",
"Id": "...",
"Created": "...",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"...": {
"Name": "package_name_A",
"EndpointID": "...",
"MacAddress": "...",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"...": {
"Name": "package_name_B",
"EndpointID": "...",
"MacAddress": "...",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
Я пытаюсь выполнить GET
запрос от A:
ret = requests.get('http://172.18.0.2:8070/')
Но каждый раз, когда я получаю этот ответ: <Response [503]> / Network Error (tcp_error)
Я пробовал несколько вещей:
Изменено 172.18.0.2 на:
- B: KO
- name_package_B: KO
- 0.0.0.0: КО
с хост-машины:
curl -X GET http://172.18.0.2:8070/ : {"say":"Hello world"}
От A: docker exec -t -i package_name_A /bin/bash
:
Я могу пинговать:
- 172.18.0.2
- B
- package_name_B
Если у кого-то есть решение, это было бы замечательно.
Спасибо за ваше время.
РЕДАКТИРОВАТЬ:
Это проблема с прокси.
Если я отключу https_proxy
и unset http_proxy
, я смогу связаться с B с A. Проблема в том, что я больше не могу подключиться к серверу на хосте (а не в контейнере). Даже с EXPORT no_proxy=172.0.0.0
Любая идея?