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

docker网络配置流程

  • 准备工作 
    1. 需要在容器中安装net-tools工具来管理网络
    2. 使用docker的默认配置启动一个容器,安装net-toolsnetwork-manager-applet。前者是网络管理工具,后者是network服务
    3. 退出容器,把容器创建为一个镜像docker commit <容器名><镜像名>
  • 宿主主机操作 
    1. 修改docker配置文件(centos/etc/docker/daemon.json),添加配置{"bridge": "br0"},使用自定义的网桥
    2. 安装网桥管理工具brctlyum install bridge-utils
    3. 创建自定义网桥: brctl addbr br0
    4. 启动docker服务(如果配置好网桥以后再启动docker,那么docker有可能会修改网桥配置,所以先启动docker再配置网桥): systemctl restart docker
    5. 删除网络接口IP:ifconfig eth0 0.0.0.0
    6. 配置网桥IP:ifconfig br0 10.10.10.111/23
    7. 添加网络接口到网桥:brctl addif br0 eth0
    8. 设置网桥状态up:ifconfig br0 up
    9. 添加默认网关:route add default gw 10.10.10.1
  • 容器中的配置 
    1. 用准备工作中创建的镜像启动一个容器
    2. 修改默认的网关与宿主网关一致:route add default gw 10.10.10.1
    3. 此时就可以配置ifcfg-eth0文件为固定的IP地址了
    4. 然后重启network服务:systemctl restart network

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

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

  
  
  1. #!/bin/bash
  2. #$1-网桥名称
  3. #$2-添加到网桥的网络接口名
  4. #$3-网桥IP
  5. #$4-系统的默认网关
  6. if [ "$1" != '' ]; then
  7. brctl showstp $1
  8. if [ $? == 0 ] ;then
  9. echo "删除已经存在的网桥"
  10. ifconfig $1 down
  11. brctl delbr $1
  12. fi
  13. echo "添加网桥"
  14. brctl addbr $1
  15. echo "启动docker服务"
  16. systemctl restart docker
  17. echo "删除网络接口IP"
  18. ifconfig $2 0.0.0.0
  19. echo "配置网桥IP"
  20. ifconfig $1 $3
  21. echo "添加网络接口到网桥"
  22. brctl addif $1 $2
  23. echo "设置网桥状态up"
  24. ifconfig $1 up
  25. echo "添加默认网关"
  26. route add default gw $4
  27. echo "启动docker完成"
  28. else
  29. echo "docker_start.sh <网桥名称><添加到网桥的网络接口名><网桥IP><系统的默认网关>"
  30. fi

脚本使用方法例如: 
./init-network.sh br0 eno1 10.10.10.104/23 10.10.10.1

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值