docker容器网络配置

Linux内核实现名称空间的创建

ip netns命令

可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包,一般系统会默认安装,如果没有的话,请自行安装

[root@localhost ~]# rpm -qa|grep iproute
iproute-5.12.0-4.el8.x86_64
[root@localhost ~]# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled;>
   Active: inactive (dead) since Thu 2022-04-28 22:17:30 CST; 2s ago
     Docs: https://docs.docker.com
  Process: 1307 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/r>
 Main PID: 1307 (code=exited, status=0/SUCCESS)

Apr 28 14:57:26 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 14:57:26 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 14:57:26 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 14:57:26 localhost.localdomain systemd[1]: Started Docker Ap>
Apr 28 14:57:26 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 22:17:30 localhost.localdomain systemd[1]: Stopping Docker A>
Apr 28 22:17:30 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 22:17:30 localhost.localdomain dockerd[1307]: time="2022-04->
Apr 28 22:17:30 localhost.localdomain systemd[1]: docker.service: S>
Apr 28 22:17:30 localhost.localdomain systemd[1]: Stopped Docker Ap>
lines 1-17/17 (END)

注意:ip netns命令修改网络配置时需要 sudo 权限。

可以通过ip netns命令完成对Network Namespace 的相关操作,可以通过ip netns help查看命令帮助信息:

[root@localhost ~]# ip netns help
Usage:	ip netns list      //查看
	ip netns add NAME       //添加名称空间
	ip netns attach NAME PID    //进入
	ip netns set NAME NETNSID   //设置名字
	ip [-all] netns delete [NAME]   //删除
	ip netns identify [PID]
	ip netns pids NAME
	ip [-all] netns exec [NAME] cmd ...   //进入
	ip netns monitor   //监控
	ip netns list-id [target-nsid POSITIVE-INT] [nsid POSITIVE-INT]
NETNSID := auto | POSITIVE-INT
[root@localhost ~]# 

默认情况下,Linux系统中是没有任何 Network Namespace的,所以ip netns list命令不会返回任何信息。

创建Network Namespace

通过命令创建一个名为ns0的命名空间:

[root@localhost ~]# ip netns list    //列出当前有哪些名称空间
[root@localhost ~]# ip netns add  ns0   //添加一个ns0的名称空间
[root@localhost ~]# ip netns list
ns0

新创建的 Network Namespace 会出现在/var/run/netns/目录下。如果相同名字的 namespace 已经存在,命令会报Cannot create namespace file “/var/run/netns/ns0”: File exists的错误。

[root@localhost ~]# ls /var/run/netns/
ns0

[root@localhost ~]# ip netns add ns0
Cannot create namespace file "/var/run/netns/ns0": File exists

对于每个 Network Namespace 来说,它会有自己独立的网卡、路由表、ARP 表、iptables 等和网络相关的资源。

操作Network Namespace

ip命令提供了ip netns exec子命令可以在对应的 Network Namespace 中执行命令。

查看新创建 Network Namespace 的网卡信息

[root@localhost ~]# ip netns exec ns0 ip a
1: lo: <LOOPB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值