Docker容器间进行网络通信配置

1.网络模式

docker网络模式

2.自定义Bridge

2.1 创建网络

通过network参数创建:

docker network create test-network #名为test-network的网络(bridge模式)

2.2 将容器添加到网络

2.2.1 未运行的容器

在docker run的时候--network参数指定网络:

docker run --name mysql --network test-network -p 3306:3306 mysql:latest

2.2.2 已创建的容器

将容器添加到网络:

docker network connect test-network mysql  #mysql容器名,test-network网络名。

查看test-network的网络配置:

docker network inspect test-network

移除已创建容器的默认网络:

docker network disconnect bridge mysql

2.3 通信方式(以postgres加gogs为例)

现在需要通信的容器已在同一网络下。
命令:

docker network create test-net
docker run --name postgres -e POSTGRES_PASSWORD="123456"  --network test-net -p 5432:5432 -d postgres:latest
docker run -p 10022:22   -p 3000:3000   --name=gogs   --restart=always -e TZ="Asia/Shanghai"   --network test-net -d gogs/gogs
docker network inspect test-net

网络查看结果:

[
    {
        "Name": "test-net",
        "Id": "432614f30123ef38bcf0ad386abee3fcf50940bb789517c6464b95daa93845ea",
        "Created": "2023-10-27T03:22:19.54867326Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "43858bf66ae5878a62d93973b9dcd0fb35cd480fb6ea54c1a8a8bcd7148c9815": {
                "Name": "postgres",
                "EndpointID": "8acee1975bbbab9ee568bef150c88c26d5911904d320bafe7da5ee7203d290e3",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "9540f616b3c6248a9d91df5a05658a519f75723cfe1510de460f3368c035cfb3": {
                "Name": "gogs",
                "EndpointID": "0f5629e42bce3277f0b4f051fb7ce8cc73c714a63e29737ccd8bdfa569826d7f",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

进入容器(可以通过容器名)并尝试连接:

docker exec -it postgres /bin/bash
apt install -y iputils-ping #安装ping
ping gogs -c 3  #gogs为容器名

结果:

PING gogs (172.18.0.3) 56(84) bytes of data.
64 bytes from gogs.test-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.098 ms
64 bytes from gogs.test-net (172.18.0.3): icmp_seq=2 ttl=64 time=0.073 ms
64 bytes from gogs.test-net (172.18.0.3): icmp_seq=3 ttl=64 time=0.116 ms

--- gogs ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2054ms
rtt min/avg/max/mdev = 0.073/0.095/0.116/0.017 ms

两个容器网络已接通。

3.overlay

可以连接多个docker守护进程或者满足集群服务之间的通信;适用于不同宿主机上的docker容器之间的通信;

3.1 创建网络

用在集群服务中的overlay式网络:

docker network create -d overlay test-overlay

既能用于集群服务,又能用于单独的容器来和其他docker守护进程中的单独的容器进行通信的网络:

docker network create -d overlay --attachable test-attachable-overlay

3.2 使用

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇