gpt4 book ai didi

docker - 在从Docker容器上的进程创建到同一容器上另一个进程的连接时,连接被拒绝

转载 作者:行者123 更新时间:2023-12-02 19:44:49 25 4
gpt4 key购买 nike

我正在使用localstack框架并在docker容器上运行
我能够从主机连接到在容器(端口4569)上运行的发电机服务。
尝试从在此容器上运行的lambda连接到dynamo(在同一容器上运行)时,连接被拒绝。我使用的IP是容器的名称。 (例如,telnet localstack 4569无法从lambda运行它)
Docker ps返回:

13:06:33  CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                                                                    NAMES
13:06:33 b909ac695561 localstack/localstack:0.11.4 "docker-entrypoint.sh" 2 minutes ago Up 2 minutes 4566-4568/tcp, 4593-4597/tcp, 0.0.0.0:4569-4592->4569-4592/tcp, 0.0.0.0:8055->8080/tcp localstack
docker 网络检查localstack-network返回:
13:06:33  [
13:06:33 {
13:06:33 "Name": "localstack-network",
13:06:33 "Id": "09994610b0d71dfc4fe0147bbc884a749362c3fb42397366591c73e3c10702eb",
13:06:33 "Created": "2020-10-04T10:03:52.586816186Z",
13:06:33 "Scope": "local",
13:06:33 "Driver": "bridge",
13:06:33 "EnableIPv6": false,
13:06:33 "IPAM": {
13:06:33 "Driver": "default",
13:06:33 "Options": null,
13:06:33 "Config": [
13:06:33 {
13:06:33 "Subnet": "100.66.0.0/16",
13:06:33 "Gateway": "100.66.0.1"
13:06:33 }
13:06:33 ]
13:06:33 },
13:06:33 "Internal": false,
13:06:33 "Attachable": true,
13:06:33 "Ingress": false,
13:06:33 "ConfigFrom": {
13:06:33 "Network": ""
13:06:33 },
13:06:33 "ConfigOnly": false,
13:06:33 "Containers": {
13:06:33 "b909ac695561200c1ab43c70c9f25cd537622593b7eade03d16af89b70c97d76": {
13:06:33 "Name": "localstack",
13:06:33 "EndpointID": "783e7aefbef801d7707d46f664b6adf329dceeee6108d23a36c63d5cb3a3fdae",
13:06:33 "MacAddress": "02:42:64:42:00:02",
13:06:33 "IPv4Address": "100.66.0.2/16",
13:06:33 "IPv6Address": ""
13:06:33 }
13:06:33 },
13:06:33 "Options": {},
13:06:33 "Labels": {
13:06:33 "com.docker.compose.network": "localstack-network",
13:06:33 "com.docker.compose.project": "infra",
13:06:33 "com.docker.compose.version": "1.24.1"
13:06:33 }
13:06:33 }
13:06:33 ]
docker-compose.yaml:
  services:
localstack:
image: localstack/localstack:0.11.4
container_name: localstack
networks:
- localstack-network
ports:
- "4566-4597:4566-4597"
- '8080:8080'
environment:
- SERVICES=lambda,stepfunctions,dynamodb,s3,sns
- DEBUG=1
- DATA_DIR=/tmp/localstack/data
- PORT_WEB_UI=${PORT_WEB_UI- }
- LAMBDA_EXECUTOR=docker #${LAMBDA_EXECUTOR- docker-reuse}
- DOCKER_HOST=unix:///var/run/docker.sock
- LAMBDA_REMOTE_DOCKER=true
- LAMBDA_REMOVE_CONTAINERS=true
volumes:
- "/tmp${TMPDIR:-/tmp/localstack}:/tmp/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"

最佳答案

在localstack中运行的Lambda实际上是在容器中执行的,因此您有一个在另一个容器(localstack)中运行的容器(Lambda),因此Lambda如果需要与其他localstack服务(例如DynamoDB)进行通信,则需要知道localstack地址。
在您的Lambda函数中,获取localstack地址并将其用于配置对象中,该配置对象用于创建DynamoDB客户端实例-这是一个C#示例:

var serviceURL = $@"http://{Environment.GetEnvironmentVariable("LOCALSTACK_HOSTNAME")}:4569";
Lambda无法连接到localstack可能还有其他原因,因此可以使用docker / docker-compose yaml设置文件和函数本身来扩展您的问题,如果您仍然遇到问题,我可能会为您提供进一步的帮助。
PS:由于您使用的是最新版本,您还可以为所有localstack服务切换到单个端口4566。

关于docker - 在从Docker容器上的进程创建到同一容器上另一个进程的连接时,连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64193447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com