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
相关文章推荐
- 用Pipework给Docker多容器配置局域网网络
- Docker 配置守护进程和容器的网络 - 配置 Docker 使用代理服务器
- 如何在 Docker 容器之间设置网络
- Linux下配置Docker容器间网络连接的教程
- 关于在Windows Server2003上面配置虚拟目录物理路径为局域网内其他机器地址的若干问题
- 开发环境配置(三) 局域网中其他机器不能访问本机IIS网站
- docker 从容器中拷文件到宿主机器中
- docker Flannel实现跨宿主主机容器互联
- Docker 网络之pipework 工具(2)将Docker容器配置到本地网络环境中
- Docker 配置网络 - 关闭容器的网络
- Docker 配置守护进程和容器的网络 - 开启 IPv6
- Windows 7上Apache服务无法让局域网内其他计算机访问 ; Apache服务配置外网
- docker+pipework配置容器网络(二)
- docker容器网络模式配置场景
- Docker:手动配置容器网络
- docker+pipework配置容器网络(三)
- 配置Docker多台宿主机间的容器互联
- docker容器互联并且暴露真实网络
- docker从零开始网络(七) 配置daemon和容器