Docker 网络主要有以下两个作用:
只要是处于同一个Docker 网络下的容器就可以使用服务名直接访问,而无需担心重启。
docker容器网络模式
bridge网络模式是基于NAT模式下的网络通信方式。此驱动为Docker的默认设置驱动,使用这个驱动的时候,将创建出来的Docker容器连接到Docker网桥上。作为最常规的模式,bridge模式已经可以满足Docker容器最基本的使用需求了。然而其与外界通信使用NAT,增加了通信的复杂性,在复杂场景下使用会有诸多限制。
容器内的网络并不是希望永远跟主机是隔离的,有些基础业务需要创建或更新主机的网络配置,我们的程序必须以主机网络模式运行才能够修改主机网络,这时候就需要用到 Docker 的 host 主机网络模式。因此可以认为host驱动适用于对于容器集群规模不大的场景。
none 网络模式即不为 Docker Container 创建任何的网络环境,容器内部就只能使用 loopback 网络设备,不会再有其他的网络资源。可以说 none 模式为 Docke Container 做了极少的网络设定,但是俗话说得好“少即是多”,在没有网络配置的情况下,作为 Docker 开发者,才能在这基础做其他无限多可能的网络定制开发。这也恰巧体现了 Docker 设计理念的开放。
container网络模式允许一个容器共享另一个容器的网络命名空间。当两个容器需要共享网络,但其他资源仍然需要隔离时就可以使用 container 网络模式,例如我们开发了一个 http 服务,但又想使用 nginx 的一些特性,让 nginx 代理外部的请求然后转发给自己的业务,这时我们使用 container 网络模式将自己开发的服务和 nginx 服务部署到同一个网络命名空间中。container 网络模式是 Docker 中一种较为特别的网络的模式,处于这个模式下的 Docker 容器会共享一个网络栈,这样两个容器之间可以使用 localhost 高效快速通信。
docker容器网络命令
- 创建网络
参数说明:
不指定任何选项的时候默认的–driver(网络模式)也是bridge(桥接),但是gateway和subnet会自动生成。
docker network create 网络名称
docker network create -d bridge mynetwork
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 mynet
docker network ls
docker network inspect 网络名称
- 网络连接
docker network connect 网络名称 容器名称
- 网络断开
docker network disconnect 网络名称 容器名称
- 网络删除
docker network rm 网络名称
- 删除所有不再使用的网络
docker network prune
- 创建并运行容器时指定网络
docker run --name containerName -p 80:80 -d --network my_network nginx
# docker network ls
NETWORK ID NAME DRIVER SCOPE
ff11ffdbd211 bridge bridge local
a80155c5275d host host local
b67166d3dfba none null local
使用示例
1、创建容器时挂载网络
#创建一个桥接类型的网络
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 myNet1
#创建并运行容器时指定网络
docker run --name containerName -p 80:80 -d --network myNet1 myNginx
#不想用时可以断开网络
docker network disconnect myNet1 myNginx
2、把已存在的容器连接到新网络
#创建一个桥接类型的网络
docker network create --driver=bridge --gateway=192.168.137.1 --subnet=192.168.137.0/16 myNet2
#为容器连接新的网络
docker network connect myNet2 myNginx
#不想用时可以断开网络
docker network disconnect myNet2 myNginx
docker-compose给容器挂载网络
使用docker-compose up -d命令编排一组容器时会默认创建一个网络,并且这组容器全部都会加入到网络当中,容器之间可以直接使用服务名去通信。
如果想要指定网络,可以参考如下配置:
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: "192.168.0.101/16"
gateway: 192.168.0.100
配置好网络后,在每个服务下可以指定使用的网络:
version: '3'
services:
nginx:
image: nginx:alpine
container_name: nginx-dev
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"
volumes:
- /usr/local/docker/workspace/nginx/html:/usr/share/nginx/html
- /usr/local/docker/workspace/nginx/conf/nginx.conf:/etc/nginx/conf.d/default.conf
networks:
- mynet
networks:
mynet:
driver: bridge
ipam:
config:
- subnet: "192.168.0.101/16"
gateway: 192.168.0.100
这样容器编排时,所有容器都会加入到mynet
这个自定义网络中。
原文地址:https://blog.csdn.net/watson2017/article/details/134618407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_1471.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!