容器与 python 个请求通信

Containers communication with python requests

这是我的架构:

我在同一主机上有两个容器(A 和 B)运行,它们有自己的网络。

docker-撰写:

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 是 运行 a bottle server :

@get('/')
def hello():
    return {"say":"Hello world"}

run(host='0.0.0.0', port=8070, debug=True)

docker inspect package_name_my_network returns :

{
        "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_proxyunset http_proxy,我可以通过 A 访问 B。问题是,我无法再访问主机(不是容器)上的服务器。即使有 EXPORT no_proxy=172.0.0.0 有什么想法吗?

已解决:这是一个代理问题。我正在使用没有环境变量的会话:

session = requests.Session()
session.trust_env = False
ret = session.get(url, json=my_json)