Docker如何发送请求(curl – 获取,张贴)一个容器到另一个容器

GET(和POST PUT ….)请求在一个容器中使用curl到另一个容器。

$ docker ps

CONTAINER ID IMAGE COMMAND PORTS NAMES b184219cd8f6 otp_totp "./run.sh" 0.0.0.0:3000->3000/tcp totp_api c381c276593f service "/bin/sh -c" 0.0.0.0:8000->8000/tcp, 0.0.0.0:9000->9000/tcp service d0add6b1c72e mysql "/tmp/run.sh" 0.0.0.0:3306->3306/tcp mysql 

当我发送请求curl -X GET http://localhost.3000到本地的totp_api container

totp_api return {'status':200}

但我想在service容器中发送请求

像// curl -X GET http://localhost:3000totp_api service容器( totp_api exec totp_api / bin / bash), totp_api将返回{'status':200}server容器

 project_folder ㄴ- docker-compose.yml # service, mysql container api_folder ㄴ- docker-compose.yml # totp_api container 

请一些身体告诉我一些build议


API /文件夹/搬运工-compose.yml

 version: '3' services: totp: build: . container_name: totp_api volumes: - $PWD:/home ports: - "3000:3000" tty: true restart: always networks: - bridge networks: bridge: driver: bridge 

 $ docker-compose up -d $ docker network ls NETWORK ID NAME DRIVER SCOPE 4a05be5e600f bridge bridge local 503d0586c7ec host host local ######## #### 727bfc6cc21f otp_bridge bridge local ######## #### 3c19d98d9ca5 otp_default bridge local 

 $ docker network inspect otp_bridge [ { "Name": "otp_bridge", "Id": "727bfc6cc21fd74f19eb7fe164582637cbad4c2d7e36620c1c0a1c51c0490d31", "Created": "2017-12-13T06:12:40.5070258Z", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "02fa407062cdd5f6f368f2d17c5e68d2f9155d1d9b30c9edcbb2386a9ded648a": { "Name": "totp_api", "EndpointID": "860c47da1e70d304399b42917b927a8cc6717b86c6d1ee6f065229e33f496c2f", "MacAddress": "02:42:ac:13:00:02", "IPv4Address": "172.19.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": { "com.docker.compose.network": "bridge", "com.docker.compose.project": "otp" } } ] 

使用dockernetworking和networking命令 ,可以确保这些容器是同一networking的一部分。

这个唯一的networking的一个副作用是容器A将知道容器B的名字:从totp_api ,你可以用它的名字来ping或者curlservice容器:

 ping service 

您可以:

  • 在Docker撰写文件中静态执行(并重新启动新的容器), – 在运行时testing它,将现有的运行容器添加到新的networking