[英]Containers communication with python requests
這是我的體系結構:
我有兩個容器(A和B)在具有各自網絡的同一主機上運行。
碼頭工人組成:
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": ""
}
我正在嘗試從A發出GET
請求:
ret = requests.get('http://172.18.0.2:8070/')
但是每次我收到此響應時: <Response [503]> / Network Error (tcp_error)
我嘗試了幾件事:
將172.18.0.2更改為:
從主機:
curl -X GET http://172.18.0.2:8070/ : {"say":"Hello world"}
從A: docker exec -t -i package_name_A /bin/bash
:我可以ping:
如果有人有解決方案,那就太好了。
謝謝你的時間。
編輯:
這是一個代理問題。 如果我未設置https_proxy
和unset http_proxy
,則可以通過A到達B。問題是,我無法再訪問主機上的服務器(不是容器)。 即使使用EXPORT no_proxy=172.0.0.0
嗎?
解決:這是一個代理問題。 我正在使用沒有env var的會話:
session = requests.Session()
session.trust_env = False
ret = session.get(url, json=my_json)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.