• docker容器间通信


    现在在我们的docker中已经有了三个容器,分别是DB/API/UI三个容器,三个容器间肯定是要进行互相通信的

    可以查看docker的官方文档,https://docs.docker.com/engine/userguide/networking/#the-default-bridge-network

    当您安装Docker时,它会自动创建三个网络。您可以使用以下docker network ls命令列出这些网络:

    docker@default:~$ docker network ls
    NETWORK ID NAME DRIVER SCOPE
    78763a12b144 bridge bridge local
    7da828c0e77b host host local
    af3045e58ef6 none null local

    Docker内置这三个网络。运行容器时,您可以使用该--network标志来指定容器应连接到哪些网络。

    通过命令创建了两个容器

    docker run -d --name mongo-docker-dev --restart=always -p 27018:27017  -v /home/docker/mongo/dev/data/configdb:/data/configdb  -v/home/docker/mongo/dev/data/db:/data/db mongo
    
    docker run -d --name person-blog-dev-backend --restart=always -p 4001:4000 person-blog-dev-backend

    当创建了两个容器后,通过命令可以查看到所以容器的网络配置信息

    docker@default:~$ docker network inspect bridge
    [
        {
            "Name": "bridge",
            "Id": "78763a12b144233dea7b7695490567dcace526019b8268f11df019aab7c9340a",
            "Created": "2017-04-27T02:06:16.288209903Z",
            "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,
            "Containers": {
                "b93993405c432c276d43220abebc8e3529a49dc42afa4a7ee5afdb139774b973": {
                    "Name": "person-blog-dev-backend",
                    "EndpointID": "20ce486bbd7756260948160ea93cf69f5a9a8dd9809acf89a35cc20d07b9377c",
                    "MacAddress": "02:42:ac:11:00:03",
                    "IPv4Address": "172.17.0.3/16",
                    "IPv6Address": ""
                },
                "f107144cf3cb412f69dc36dd11601b592b220601a6dce549be8e2ea781b53522": {
                    "Name": "mongo-docker-dev",
                    "EndpointID": "6b852692948c3c8d83979c33afe3e4c97055f07e74660e20cad612e86984d0c2",
                    "MacAddress": "02:42:ac:11:00:02",
                    "IPv4Address": "172.17.0.2/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": {}
        }
    ]
    docker@default:~$

    可以看到,两个容器都在同一个网段中,应该也是可以互相通信的,使用命令,这里是使用backend去ping mongodb容器

    docker@default:~$ docker exec -it person-blog-dev-backend bash
    root@b93993405c43:/user/src/app# ping -w3 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: icmp_seq=0 ttl=64 time=0.080 ms
    64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.091 ms
    64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.146 ms
    --- 172.17.0.2 ping statistics ---
    4 packets transmitted, 3 packets received, 25% packet loss
    round-trip min/avg/max/stddev = 0.080/0.106/0.146/0.029 ms
    root@b93993405c43:/user/src/app#
  • 相关阅读:
    Django----路由控制
    Django-ORM的使用
    Django-ORM框架
    Django对数据库表的操作
    Python操作mysql
    [mysql]linux mysql 基础命令操作
    [mysql]linux mysql 读写分离
    [mysql]linux mysql 主从复制
    [mysql 1]linux mysal 安装
    [mysql]linux mysal 安装
  • 原文地址:https://www.cnblogs.com/weschen/p/6773600.html
Copyright © 2020-2023  润新知