您的位置:首页 > 运维架构 > Docker

docker配置网络(容器之间、容器与外网、容器与宿主、容器与宿主所在局域网的其他机器都互联)

2018-01-19 13:55 756 查看

docker网络配置流程

准备工作 
需要在容器中安装
net-tools
工具来管理网络
使用docker的默认配置启动一个容器,安装
net-tools
network-manager-applet
。前者是网络管理工具,后者是network服务
退出容器,把容器创建为一个镜像
docker commit <容器名><镜像名>


宿主主机操作 
修改docker配置文件(
centos
/etc/docker/daemon.json
),添加配置
{"bridge": "br0"}
,使用自定义的网桥
安装网桥管理工具
brctl
yum install bridge-utils

创建自定义网桥: 
brctl addbr br0

启动docker服务(如果配置好网桥以后再启动docker,那么docker有可能会修改网桥配置,所以先启动docker再配置网桥): 
systemctl restart docker

删除网络接口IP:
ifconfig eth0 0.0.0.0

配置网桥IP:
ifconfig br0 10.10.10.111/23

添加网络接口到网桥:
brctl addif br0 eth0

设置网桥状态up:
ifconfig br0 up

添加默认网关:
route add default gw 10.10.10.1


容器中的配置 
用准备工作中创建的镜像启动一个容器
修改默认的网关与宿主网关一致:
route add default gw 10.10.10.1

此时就可以配置
ifcfg-eth0
文件为固定的IP地址了
然后重启
network
服务:
systemctl restart network


注意以上启动容器的时候都要使用提权的启动形式,不然的话不能启动服务。 
docker run --name=<容器名> --privileged -d <镜像名> /sbin/init

宿主机部分的配置操作创建为以下脚本

#!/bin/bash


#$1-网桥名称

#$2-添加到网桥的网络接口名

#$3-网桥IP

#$4-系统的默认网关


if  [ "$1" != '' ]; then

brctl showstp $1

if [ $? == 0 ] ;then

echo "删除已经存在的网桥"

ifconfig $1 down

brctl delbr $1

fi


echo "添加网桥"

brctl addbr $1


echo "启动docker服务"

systemctl restart docker


echo "删除网络接口IP"

ifconfig $2 0.0.0.0


echo "配置网桥IP"

ifconfig $1 $3


echo "添加网络接口到网桥"

brctl addif $1 $2


echo "设置网桥状态up"

ifconfig $1 up


echo "添加默认网关"

route add default gw $4

echo "启动docker完成"

else

echo "docker_start.sh <网桥名称><添加到网桥的网络接口名><网桥IP><系统的默认网关>"

fi

脚本使用方法例如: 
./init-network.sh br0 eno1 10.10.10.104/23 10.10.10.1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: