一. 案例

1.创建一个 container

  docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done"

2.进入到 container 内

  docker exec -it test1 /bin/sh

3.查看 当前网络 ip a

  可以看出 其使用的 ip 地址为 127.0.0.1  和 172.17.0.2

4. 退出 到 虚拟机 使用 ip a

  可以看出 其 ip 地址 与 test1 内的 ip 地址不同  所以 通过 network Namespace 实现了网络的隔离

5. 再次创建相同的容器

  docker run -d --name test2 busybox /bin/sh -c "while true; do sleep 3600; done"

6.进入 查看新 容器的 IP

  docker exec test2 ip a

  可以看出 其使用的 ip 地址为 127.0.0.1  和 172.17.0.3

7. 进入 test2 容器 并 ping 通 test1 是可以 ping 通的

  docker exec -it test1 /bin/sh

  ping 172.17.0.2

二. network Namespace 操作

  1. 查看所有 network Namespace

    sudo ip netns list

  2. 删除 network Namespace

    sudo ip netns delete [ list 出来的项 ]

  3. 添加  network Namespace

    sudo ip netns add [eg:test1]

  4.查看创建的 容器 test1 的 ip

    sudo ip netns exec test1 ip a  在 test1 容器内 执行 ip a 命令

    sudo ip netns exec test1 ip link   在 test1 容器内 执行 ip link 命令

    sudo ip netns exec test1 ip link set dev lo up 让 test1 容器内 的 lo 回管口 up 起来

三 连接两个容器

  

  1. 添加一对link  (即 图中 那根管道)

    sudo ip link add veth-test1 type veth peer name veth-test2

    使用 ip a 查看创建的 link

      会出现 veth-test2@veth-test1   和  veth-test1@veth-test2 这一对link

  2. 将 veth-test1 添加到 test1 容器中  并且 将 veth-test2 添加到 test2 容器中

    sudo ip link set veth-test1 netns test1

    sudo ip netns exec test1 ip link   查看是否包含 veth-test1

    ip a                 查看包含的 veth 是否还包含 veth-test1

    sudo ip link set veth-test2 netns test2

    sudo ip netns exec test2 ip link  查看是否包含 veth-test2

    ip a                 查看包含的 veth 是否还包含 veth-test2

  3. 分配 ip 地址

    分配 ip 地址 test1

      sudo ip netns exec test1 ip addr add 192.168.1.13/24 dev veth-test1

    分配 ip 地址 test2

      sudo ip netns exec test2 ip addr add 192.168.1.14/24 dev veth-test2

    使用 ip link 查看是否分配 ip 地址  发现 网络 还未开启

      sudo ip netns exec test1 ip link

    将 test1 和 test2 的网络 开启

      sudo ip netns exec test1 ip link set dev veth-test1 up

      sudo ip netns exec test2 ip link set dev veth-test2 up

    使用 ip a 查看是否 分配ip 地址

      sudo ip netns exec test1 ip a

      sudo ip netns exec test2 ip a

    使用 ping 互通 test1 test2

      sudo ip netns exec test1 ping 192.168.1.14

      sudo ip netns exec test2 ping 192.168.1.13

13.docker 网络 docker NameSpace (networkNamespace)的更多相关文章

  1. 14. docker 网络 docker bridge0 详解

    1.创建一个 container docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done ...

  2. 15 docker 网络 docker 容器之间的关系 docker link

    1.案例:使用 link 关联后台与数据库 创建 test1 容器 docker run -d --name test1 busybox /bin/sh -c "while true; do ...

  3. 12. docker 网络 docker network (docker 网络)

    1. 环境准备 编写 Vagrantfile 为 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.require_version "> ...

  4. 理解Docker :Docker 网络

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  5. (转)Docker 网络

    转:https://www.cnblogs.com/allcloud/p/7150564.html 本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker ...

  6. Docker 网络原理

    引言 学习docker网络,可以带着下面两个问题来探讨 容器之间可以相互访问的原理 容器暴露端口后,通过宿主机访问到容器内应用,并且对于访问端而言不用感知容器存在的原理 Docker 本身的技术依赖L ...

  7. 理解Docker(5):Docker 网络

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. docker网络

    docker网络   Docker 允许通过外部访问容器或容器互联的方式来提供网络服务. 端口映射允许外部访问容器 --link 容器互联 容器桥接网络 .通过--link容器通信,给test2添加一 ...

  9. 16.2,docker网络

      Docker 允许通过外部访问容器或容器互联的方式来提供网络服务. 端口映射允许外部访问容器 --link 容器互联 容器桥接网络 .通过--link容器通信,给test2添加一个hosts解析记 ...

随机推荐

  1. C# 使用复选框实现循环添加多条信息入库!

    先在前台获取到所有要添加信息的Id $('.imgid').each(function () {                     if ($(this).attr("src" ...

  2. ES6模块化深入 debug

    引子: 2020.2.24.最近刚写完一个vue项目.项目用到ES6的模块化 想到之前写node项目用到过commonjs模块化 就想着把所有用到过的模块化技术 总结学习一下 在看阮一峰老师的 es6 ...

  3. Codeforces 392 B Blown Garland

    题意:输入是由连续的RYGB和字符!组成的字符串,R代表红灯,Y代表黄灯,G代表绿灯,B代表蓝灯.简而言之,就是给定的字符串保证了下标对4取余相同的灯颜色都相同,但是有的地方为‘!’代表这个灯坏了,然 ...

  4. jQuery实现点击div外的区域,来隐藏指定节点

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...

  5. 2. Jetson TX2--python3下编译安装opencv3.4

    https://cloud.tencent.com/developer/article/1327273 jetpack3.2自带了opencv3.3,但是只提供了python2.7的编译版本,所以也只 ...

  6. mysql与mariadb性能测试方法

    本方法来自于阿里云的MySQL性能白皮书,原文地址:https://help.aliyun.com/document_detail/35264.html?spm=a2c4g.11174359.6.77 ...

  7. JS ~ 返回上一步

      <a href=" javascript:window.history.back() "> 返回上一步 </a>

  8. python-局域网内实现web页面用户端下载文件,easy!

    好久没有发博客了,但是也没闲着,最近疫情原因一直在家远程办公,分享一下今天的干货 先说需求:某个文件压缩之后可以供用户点击下载 没想到特别好的办法,在网上搜索大多都是通过socket实现的,然后我这个 ...

  9. spring+springMVC+mybatis , 项目启动遇坑

    github上找的框架组合例子 结合自己的数据库作为新项目开发. 但是项目启动时,tomcat启动失败: 检查不出错误. 于是改换maven引入jetty插件来启动项目, 结果在未改动的任何代码的情况 ...

  10. 利用京东云Serverless服务快速构建5G时代的IoT应用

    10月31日,在2019年中国国际信息通信展览会上,工信部宣布:5G商用正式启动.5G商用时代来了! 5G的商用,使得数据传输速度.响应速度.连接数据.数据传输量.传输可靠性等方面都有了显著的提升,这 ...