docker network详解、教程

10 篇文章 1 订阅
6 篇文章 0 订阅

1、docker network --help

#帮助命令后显示下面信息
[root@localhost /]# docker network --help

Usage:	docker network COMMAND

Manage networks

Options:
      --help   Print usage

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
  • connect 将某个容器连接到一个docker网络
  • create 创建一个docker局域网络
  • disconnect 将某个容器退出某个局域网络
  • inspect 显示某个局域网络信息
  • ls 显示所有docker局域网络
  • prune 删除所有未引用的docker局域网络
  • rm 删除docker网络

2、创建自定义docker局域网络

docker network create mynet 

然后pull两个镜像使用新创建的网络

3、pull镜像和运行镜像

#pull之前先设置docker镜像加速,国外pull速度很慢,参考:
https://blog.csdn.net/wangyue23com/article/details/110194399

docker pull redis
docker pull nginx
#运行redis容器
docker run -itd --name redis  --network mynet --network-alias redis -p 6379:6379 redis
#运行nginx容器
docker run -d --name nginx -p 80:80 --network mynet --network-alias nginx --privileged=true   -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs  nginx

运行容器时候加入命令 --network mynet --network-alias redis,
代表当然容器要加入到mynet局域网络中

4、docker 查询网络信息

#查看mynet的详细信息,发现redis和nginx已在Containers容器内,属于当前mynet网络
[root@localhost /]# docker network inspect mynet
[
    {
        "Name": "mynet",
        "Id": "8453b7b1d246f1ad54e27033928bbb8e7842ca96b4315fad720688af206b69c6",
        "Created": "2020-12-13T22:50:55.566207522-08:00",
        "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,
        "Containers": {
            "87ff63bb819a823578bed89a67527009d9fee31a92de9d50e5d635b97cc18664": {
                "Name": "redis",
                "EndpointID": "19a04279300025dc936d206a287b1e31d04b339298b445694452a5f4326f7051",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "c75ff4ac770fd04a1c6daa05a82533555038e3b0f8e15c3b1ee29e26c14a0131": {
                "Name": "nginx",
                "EndpointID": "4ccc014edcfd7be443c75491cc32aa0745561cfd45903e204e8d3e7afa94a4fe",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

5、验证ping命令是否容器之间网络交互

#进入redis命令行,使用ping nginx命令验证能够连接成功**使用ping命令之前,需要给docker安装ping,自行百度**
docker exec -it redis bash
root@822f249e7d90:/# ping nginx
PING nginx (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: icmp_seq=0 ttl=64 time=0.071 ms
64 bytes from 172.18.0.3: icmp_seq=1 ttl=64 time=0.100 ms

同样也可以不指定网络,直接启动容器,然后使用docker network connect接入网络。

#将容器删掉重新创建
docker stop nginx
docker rm -f nginx
docker stop redis
docker rm -f redis

6、使用docker network connect

#运行nginx和docker容器
docker run -itd --name redis -p 6379:6379 redis
docker run -d --name nginx -p 80:80 --privileged=true -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs nginx

使用docker network connect命令连接网络

#加入nginx到mynet网络
[root@localhost /]# docker network connect mynet nginx
#加入redis到mynet网络
[root@localhost /]# docker network connect mynet redis
#查看mynet网络包含的容器,会发现两个容器都加入当前网络了,后面使用ping命令是能够ping通容器名称的。
[root@localhost /]# docker network inspect mynet

7、docker network disconnect

#将nginx移除mynet局域网络
docker network disconnect mynet nginx

使用docker network 很方便的维护和管理docker网络,方便容器之间ip和端口交互。

  • 26
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Docker网络Docker容器与容器之间进行通信的重要方式,也是Docker实现微服务架构的关键组成部分。Docker网络提供了灵活、高效、可扩展的网络架构,能够满足复杂应用的网络需求。 Docker网络有四种类型:bridge、host、overlay和macvlan。 1. Bridge:桥接网络Docker默认创建的网络,容器通过虚拟网桥连接到宿主机的物理网络。可以手动创建桥接网络,并将容器连接到该网络,实现容器间的通信。 2. Host:主机网络模式是直接使用宿主机的网络,容器与宿主机共享同一个网络栈,因此容器可以使用宿主机的网络服务,效率更高,但容器间的网络隔离性较差。 3. Overlay:覆盖网络用于在多个Docker主机之间创建跨主机的容器通信。它使用VXLAN协议在不同主机之间进行通信,实现容器的跨主机网络连接。 4. Macvlan:Macvlan网络允许容器拥有自己的MAC地址,每个容器相当于虚拟出一个物理网络接口,容器与主机以及其他容器之间的网络完全隔离,性能较好。 除了这四种基本网络类型之外,Docker还支持网络插件来扩展网络功能。例如,可以通过插件实现容器与外部网络的连接,或者自定义网络的子网和网段等。 使用Docker网络,可以通过容器名称或者IP地址进行容器之间的通信。还可以通过容器和主机的端口映射,将外部流量导入到容器内部的服务。 总之,Docker网络提供了多种网络类型和插件来满足不同需求,方便构建复杂的容器化应用架构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangyue23com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值