【无标题】自己动手写Docker系列 -- 6.3 手动配置容器网络(上)

本文档介绍了如何手动配置Docker容器网络,包括创建网桥、配置容器网络、设置路由,以实现容器与宿主机及外网的通信。通过实践操作,为后续程序编写打下基础。
摘要由CSDN通过智能技术生成

简介

网络部分较为复杂,本篇先利用之前写好的基础容器和网桥部分,加上手工给容器配置网络,让其容器与宿主机网络部分功能正常,为后面程序编写打下基础

源码说明

同时放到了Gitee和Github上,都可进行获取

本章节对应的版本标签是:5.8,防止后面代码过多,不好查看,可切换到标签版本进行查看

思路梳理

在以前的文章中,我们完成了基础容器的功能,在单机情况下基本可用,但没有网络那就不完善

网络部分目前就写了一个IP分配管理工具,和network命令,用于创建网桥

在本人尝试过程中,如果不对网络配置部分有一定的了解,对应后面网络部分的编写和理解会感到很懵

所以我们需要进行一定的热身,先手工给我们的容器配置上网络,后面再用代码完成这部分的功能

关于如何手工进行配置,在《自己动手写Docker》和文章:好文 Linux Network Namespace 与 Bridge 网桥中,都有了很好的描述

跟着上面的链接走一遍了,基本上就通了(PS:如果在ping 114.114.114.114 始终不行,可能是之前的网络配置过于乱了,将iptables规则进行清理或者重启下主机)

对于手动创建网络和配置网络,这里就不再重复,本文的重点放到如果应用上面的知识给目前的容器配置网络

准备工作

实验环境基于代码的标签:6.2

该部分代码,完成了基本的容器功能和网桥的创建,基于这个基础,我们要做的事情如下:

  • 单容器:
    • 容器能访问宿主机网络
    • 容器能访问外网
  • 多容器-同局域网能访问
  • 多容器-不同局域网能访问

手动网络配置

容器启动与网桥创建

创建网桥,将我们的网段设置为:162.16.0.0/24

$ ./main network create --driver bridge --subnet 162.16.0.1/24 testbridge
{
   "level":"info","msg":"allocate subnet: 162.16.0.1/24, ip: 162.16.0.1","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"dump ipam file from: /var/run/mydocker/network/ipam/","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"BridgeNetworkDriver creat network subnet: 162.16.0.1/24, gateway ip: 162.16.0.1","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"createBridgeInterface success","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"setInterfaceIp success","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"crsetInterfaceUp success","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"setInterfaceUp success","time":"2022-04-23T09:37:13+08:00"}
{
   "level":"info","msg":"create network success","time":"2022-04-23T09:37:13+08:00"}

$ ./main network list
NAME         IpRange         Driver
testbridge   162.16.0.1/24               bridge

在宿主机上查看我们网桥,使用ip命令进行查看,可以看到我们网桥成功创建,并设置了ip为:162.16.0.1,这将作为我们容器的网关IP

$ ip addr
10: testbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值