Docker快速搭建PHP环境之二: Docker网络

Centos, Ubuntu, Nginx, MySQL, Redis, Mongodb, Docker, ...
发表回复
头像
IOsetting
论坛管理员
论坛管理员
帖子: 3641
注册: 2006-10-17 1:48

Docker快速搭建PHP环境之二: Docker网络

帖子 IOsetting » 2018-11-28 0:59

Docker命令分为三大部分: network, image 和 run. 分别代表了对Docker网络, Docker镜像和Docker运行时(即Docker容器)的操作. 以下说明Network常用命令.

Docker的常用网络有四种类型(driver): bridge, host, macvlan 和 null.
  • birdge: 就如同桥接的switch/hub, 使用bridge网络的container会分配一个当前bridge配置的子网IP
  • host: 需要使用 --network=host 参数指定. 使用主机网络, 此时 container 的网络会附属在主机上, 两者是互通的. 例如在container中的服务监听8080端口, 则主机的8080端口就会自动映射到这个端口.
  • macvlan: 将docker网络与宿主机的物理网卡绑定, 同一台宿主机只能绑定一个macvlan类型的网络, 使用 -d macvlan 创建
  • none: 需要使用 --network=none 参数指定. 不分配局域网的IP

代码: 全选

# 查看docker网络列表
$ docker network ls
# 查看具体网络明细
$ docker network inspect mybridge
# 断开连接
$ docker network disconnect bridge-local redis
# 删除网络
$ docker network rm bridge-local
Tip 1: 使用默认的bridge网络, 是不支持给容器指派固定IP的

代码: 全选

$ docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash
6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6
$ docker: Error response from daemon: User specified IP address is supported on user defined networks only.
需要使用自定义的network, 创建完后, 在宿主机上能看到新的bridge 的网关IP

代码: 全选

# 创建bridge类型网络
$ docker network create --subnet=192.168.250.1/24 mybridge
# 然后就使用固定IP创建Container了
$ docker run --name eureka -itd --net mybridge --ip 192.168.250.3 scot-eureka:latest /bin/bash
开发中主要使用的是 Macvlan 网络

代码: 全选

# 创建macvlan网络, 这里252.1是网关, 252.151是宿主机IP, enp2s0f0是宿主机的网卡名称
$ docker network create -d macvlan --subnet=192.168.252.0/24 --gateway=192.168.252.1 --aux-address="parent_host=192.168.252.151" -o parent=enp2s0f0 bridge-local
# 将运行中的docker连接至bridge-local
$ docker network connect bridge-local redis --ip 192.168.252.10

发表回复