当前位置: 首页 > 知识库问答 >
问题:

如何配置一个网络中的容器来互相连接(服务器->mysql)?

薄龙光
2023-03-14
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3ce966e43414        own:latest          "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:80->3000/tcp                own
ed10cfc93dd5        mysql:5             "docker-entrypoint.s…"   20 minutes ago      Up 20 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

当我仅通过cmd(而不是通过docker VM)使用服务器应用程序打开端口localhost:3000时,一切都很好,我看到成功连接到docker-container 0.0.0.0:3306,但当我:

docker开始拥有

检查browser 0.0.0.0:80,我看到错误:connect eConnnRefired 127.0.0.1:3306

NETWORK ID          NAME                DRIVER              SCOPE
019f0886d253        bridge              bridge              local
fa1842bad14c        host                host                local
85e7d1e38e14        none                null                local
[
{
    "Name": "bridge",
    "Id": "019f0886d253091c1367863e38a199fe9b539a72ddb7575b26f40d0d1b1f78dc",
    "Created": "2019-11-19T09:15:53.2096944Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            }
        ]
    },
    "Internal": false,
    "Attachable": false,
    "Ingress": false,
    "ConfigFrom": {
        "Network": ""
    },
    "ConfigOnly": false,
    "Containers": {
        "a79ec12c4cc908326c54abc2b47f80ffa3da31c5e735bf5ff2755f23b9d562dd": {
            "Name": "own",
            "EndpointID": "2afc225e29138ff9f1da0f557e9f7659d3c4ccaeb5bfaa578df88a672dac003f",
            "MacAddress": "02:42:ac:11:00:02",
            "IPv4Address": "172.17.0.2/16",
            "IPv6Address": ""
        },
        "ed10cfc93dd5eda7cfb8a26e5e4b2a8ccb4e9db7a4957b3d1048cb93f5137fd4": {
            "Name": "mysql",
            "EndpointID": "ea23d009f959d954269c0554cecf37d01f8fe71481965077f1372df27f05208a",
            "MacAddress": "02:42:ac:11:00:03",
            "IPv4Address": "172.17.0.3/16",
            "IPv6Address": ""
        }
    },
    "Options": {
        "com.docker.network.bridge.default_bridge": "true",
        "com.docker.network.bridge.enable_icc": "true",
        "com.docker.network.bridge.enable_ip_masquerade": "true",
        "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
        "com.docker.network.bridge.name": "docker0",
        "com.docker.network.driver.mtu": "1500"
    },
    "Labels": {}
}
]

也许我可以将自己的容器分配给像MySQL这样的桥接网络。之后mysql容器的localhost会被看到为自己的容器吗?请帮帮忙我该怎么办?

共有1个答案

富涛
2023-03-14
#create network mynetwork
docker network create --subnet 172.17.0.0/16 mynetwork

#create own container (without starting it)
docker create -d --name own -p 80:3000 own:latest

#add own container to the network mynetwork
docker network connect --ip 172.17.0.2 mynetwork own

#start container own
docker start own

#same as above but with different ip
docker create -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 mysql:5
docker network connect --ip 172.17.0.3 mynetwork mysql
docker start mysql

当您停止并移除容器时,您可以通过以下方式移除网络:

docker network rm mynetwork

或者,如果您没有这样做,那么就不需要像上面那样再次创建它,而只需要将您的新容器/其他容器连接到它。

在应用程序中,您应该使用172.17.0.3作为MySQL地址。

 类似资料:
  • 我有一个依赖于多个docker容器的应用程序。我使用docker撰写,以便所有容器都在同一个网络中进行容器间通信。但是,我的两个容器在各自的容器中监听相同的端口8080,但是映射到主机上的不同端口: 8072,8073。对于集装箱间的通信,因为我们使用集装箱的端口,这会引起问题吗? 限制条件: 我需要两个容器才能运行我的应用程序。因此,我无法将具有相同内部端口的其他容器隔离到不同的网络 所有容器都

  • 我是码头工人和库伯内特斯的新手。使用的技术: < li >点网核心2.2 < li>Asp。NET Core WebAPI 2.2 < li >启用Kubernetes支持的Docker for windows(Edge) < li >代码 我将两个服务托管到两个docker容器容器1和容器2中。 下面是我的部署。yaml 当我运行命令时: 我获得的状态为 。 但是当我只配置了一个容器时,同样运行

  • Twisted Twisted 是一个事件驱动的网络引擎。他可以被用来构建多种网络协议的应用程序,包括:HTTP 服务器和客户端;使用 SMTP、POP3、IMAP 或者 SSH 协议测应用程序和 IM (即时消息)等应用 更多。 PyZMQ PyZMQ 是 ZeroMQ 的 Python 绑定。ZeroMQ 是一个高性能的异步消息库,它的一个很大的优势在于其可以被用作一个消息队列而不需要消息代理

  • 我的配置单元服务器启用了SSL和Kerberos。但当我尝试使用以下命令通过beeline连接到hiverserver2时: 但得到了同样的错误。 ssl和kerberos互相兼容吗?

  • 在最新版本的Android(尤其是Pixel)上处理Wifi Manager时,我看到了一些有趣的行为。我正在尝试使WIFI manager连接到已知的热点(IOT设备)。 谷歌在一篇博客文章中清楚地列出了这些步骤,如果你在Lollipop上,你需要绑定到一个特定的网络,以确保你的网络请求通过一个给定的网络。你可以在这里找到步骤https://android-developers.googlebl

  • 本文向大家介绍Linux 检测服务器是否连接着网络,包括了Linux 检测服务器是否连接着网络的使用技巧和注意事项,需要的朋友参考一下 Linux 检测服务器是否连接着网络 摘要: 每隔5分钟检测一次服务器是否连接着网络,如果三次检测都没有网络?则自动关机! 主要使用场景: 由于自己有一台服务器放在偏远的老家,有可能会遇到停电导致断网的问题,并且停电后UPS使用时间也有限制, 因此设计此脚本为了解