官方文档: https://docs.docker.com/network/network-tutorial-standalone/
一, 四种网络类型:
- Bridge
- Host
- Overlay
- Macvlan
二, 分别介绍:
Bridge:
桥接, 网络相当于一个局域网, 在一台安装了docker的机器上, 可以有多个这种Bridge网络. 一个Bridge网络内部可以相互以container name ping通, 也可以用IP ping 通, 不同局域网只能用IP相互ping通. 另外, 默认在bridget网络无法用container name ping通, 我没找到官方的解释, 只看到官方文档描述这种现象的文字.
使用场景: alpine, 一个轻量级linux版本, 据说适合做docker基础镜像.
docker network ls
docker run -dit --name alpine1 alpine ash //-dit? detached, interactive, TTY(input & output)
docker run -dit --name alpine2 alpine ash
docker network inspect bridge
在Containers节点下, 会列出使用了bridge的container, 它们的IP地址.
docker attatch进去, 是无法用container name相互ping的, 用IP可以ping通
然而, 新建一个bridge类型的网络:
docker container stop alpine1 alpine2
docker container rm alpine1 alpine2 //先删除刚刚创建的两个container
docker network create --driver bridge alpine-net
并且docker run的时候指定新建的网络, docker attach进去这两个container时就可以用container name相互ping通了:
docker run -dit --name alpine1 --network alpine-net alpine ash
docker run -dit --name alpine2 --network alpine-net alpine ash
Host:
直接使用docker所在机器的网络, 端口之类的, 据说是这种网络下, docker不会虚拟出网卡之类的硬件.
使用场景: nginx
Overlay:
docker swarm专用的网络, 同一个swarm里一般是多台实体机器, 当然也可以是多台虚拟机. overlay就是一个多台机器的局域网, 比如一个web服务器, 要以replicas模式运行时, 会将container较均匀地分布在swarm的各机器上.
Macvlan:
不了解.
完.