一. 案例

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. oracle将字符串根据特定字符串拆分为多个子字符串

    将 字符串 '20180321-4768-4735261' 按‘-’  拆分: 语法: INSTR()函数 1.用处: 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 2.语法格式: ...

  2. POJ 1185:炮兵阵地

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 21366   Accepted: 8280 Description ...

  3. 读书笔记 - js高级程序设计 - 第十二章 DOM2和DOM3

      Node类型的变化   访问元素的样式 myDiv.style.backgroundColor = "red" myDiv.style.width = "100px& ...

  4. Sublime Text基本配置

    官网最新版本号 3059 破解链接: http://bbs.pediy.com/showthread.php?t=182774 可以看那个人放出来的百度网盘,去他的百度网盘里面可以看到最新的破解文件. ...

  5. OO第三单元“技术”博客

    主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为 ...

  6. 2020/2/4 PHP代码审计之会话认证漏洞

    0x00 会话认证漏洞简介 会话认证是个非常大的话题,涉及各种协议和框架,如cookie.session.sso.oauth.openid等. 而其中最常使用的是Cookie和Session,他们都能 ...

  7. 十分简明易懂的FFT(快速傅里叶变换)

    https://blog.csdn.net/enjoy_pascal/article/details/81478582 FFT前言快速傅里叶变换 (fast Fourier transform),即利 ...

  8. Linux环境创建交换分区

    最近在准备在移动端跑一下深度学习训练好的模型,在RK3399的板子上安装scipy时报错.网上查了一下,由于内存不足导致,做个交换分区就搞定了.那么如何做交换分区呢.话不多说,直接开撸. ------ ...

  9. python一个正则表达式的不解

    htmlSource="data-lazy=\"http://gtms01.alicdn.com/tps/i1/T1faOCFQXXXXc2jIrl-.png\"&quo ...

  10. Mac电脑如何彻底删除node

    之前本来想搭建一个hexo来写博客的,但是最后还是放弃,老老实实就在博客园和CSDN写博文了,这里记录一下怎么在Mac电脑下彻底删除node.js的方法 下面这个方法是我结合了网上好几个方法综合在一起 ...