docker 创建网桥
2018-01-14 22:59
197 查看
运行一个容器name=test1
建立一个容器连接的网桥 br0, host.eth0 —br0— veth-a <–> veth-b(eth0) in container
将主机eno1连接到br0上,并把eno1的IP配在br0上, 删除原有路由,添加新的default路由到br0上。由于远程执行,会导致断网,因此在一条命令中执行。
找到test1的PID,保存到pid中
将容器的network namespace添加到/var/run/netns目录下
创建用于连接网桥br0和docker容器的网卡设备 veth设备
将veth-a连到br0上
将veth-b放到容器test1里的network nemespace,重命名为eth0,并为其配置IP和默认路由
docker run -itd --name test1 --net=none ubuntu /bin/bash
建立一个容器连接的网桥 br0, host.eth0 —br0— veth-a <–> veth-b(eth0) in container
brctl addbr br0 ip link set br0 up
将主机eno1连接到br0上,并把eno1的IP配在br0上, 删除原有路由,添加新的default路由到br0上。由于远程执行,会导致断网,因此在一条命令中执行。
ip addr add 109.105.115.74/24 dev br0; ip addr del 109.105.115.74/24 dev eno1; brctl addif br0 eth0; ip route del default; ip route add default via 109.105.115.1 dev br0;
找到test1的PID,保存到pid中
pid=$(docker inspect --format '{{ .State.Pid }}' test1)
将容器的network namespace添加到/var/run/netns目录下
mkdir -p /var/run/netns ln -s /proc/$pid/ns/net /var/run/netns/$pid
创建用于连接网桥br0和docker容器的网卡设备 veth设备
ip link add veth-a type veth peer name veth-b
将veth-a连到br0上
ip link set veth-a up brctl addif br0 veth-a
将veth-b放到容器test1里的network nemespace,重命名为eth0,并为其配置IP和默认路由
ip link set veth-b netns $pid ip netns exec $pid ip link set dev veth-b name eth0 ip netns exec $pid ip link set eth0 up ip netns exec $pid ip addr add 109.105.115.201/24 dev eth0 ip netns exec $pid ip route add default via 109.105.115.1 dev eth0
相关文章推荐
- 创建docker自定义网桥 自定义网桥的配置 docker0
- Docker创建一个网桥【段]
- 创建自定义的docker 基础镜像
- 【Docker构建】- 创建带apache服务的Centos Docker镜像
- Docker创建JIRA 7.2.4中文破解版
- Dockerfile 示例一:创建一个MongoDB的镜像
- Docker创建支持php服务的镜像
- docker学习-进入的container及创建本地镜像
- 通过Dockerfile创建支持SSH服务的CentOS镜像
- 使用Docker registry镜像创建私有仓库
- Docker学习之路(六)用commit命令创建镜像
- 使用 docker 创建自己的镜像
- 使用Dockerfile创建支持ssh服务自启动的容器镜像
- Dockerfile创建带有nginx服务的Centos Docker镜像
- 使用GitLab自动创建 Docker img
- [容器]docker创建镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker 自定义网桥和IP
- Docker学习笔记 - 创建私有的镜像仓库
- Docker创建MySQL容器环境两部曲