前言

前端时间, 使用docker过程中, 又接触到需要docker network的相关知识. 之前的了解都是, 可以满足日常的使用即可, 本次, 借着机会仔细的了解了一下.
当然, 对于网络知识的更加深入的理解可能没有精通网络的大佬玩的转.


docker的网络类型 及相应构造

据悉. docker 1.7和docker1.8 共有4种默认的网络类型, 其分别为: None/ Host/ Bridge(默认)/ Container.

  • 通过docker network ls查看

docker默认是会创建如下几种的网络的. Host/ None/ Bridge

  • None

--net=none不创建相关网络. 即只能容器内自己执行. 容器不进行网络虚拟化, 容器和外部无法进行通信.

  • host

--net=host主机模式. 容器和主机使用同一套网络. 比如容器内使用8080端口的一个进程, 那么宿主机也无法使用这个端口. 反之, 同理.

  • bridge (默认)

--net=bridge每个容器都进行网络虚拟化. 并且通过端口映射和主机进行通信.

  • container

--net=container:Name_or_Id某个容器启动时, 可以不进行自身网络的虚拟化. 而使用其他容器的网络.

bridge模式

​如一般Docker会使用172.17.0.0/16这个网段,并将172.17.0.1/16分配给docker0网桥(在主机上使用ifconfig命令是可以看到docker0的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)。单机环境下的网络拓扑如下,主机地址为10.10.0.186/24。


常用的docker network命令

  • 创建网络
docker network create --driver=bridge --subnet=192.168.88.0/24 demo
# driver 网络模式
# subnet 网段 默认网段为172.17.0.0/16
# demo 名称
  • container启动时, 使用网络
#运行redis容器
docker run -itd --name redis  --network mynet --network-alias redis -p 6379:6379 redis
#运行nginx容器
docker run -d --name nginx -p 80:80 --network mynet --network-alias nginx --privileged=true   -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs  nginx

  • 查询container的网络 docker inspect <containerName_or_Id>
# 运行容器;
$ docker run --name=nginx_bridge --net=bridge -p 80:80 -d nginx
9582dbec7981085ab1f159edcc4bf35e2ee8d5a03984d214bce32a30eab4921a# 查看容器;
$ docker ps
CONTAINER ID        IMAGE          COMMAND                  CREATED             STATUS              PORTS                NAMES
9582dbec7981        nginx          "nginx -g 'daemon ..."   3 seconds ago       Up 2 seconds        0.0.0.0:80->80/tcp   nginx_bridge# 查看容器网络;
$ docker inspect 9582dbec7981
"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "9e017f5d4724039f24acc8aec634c8d2af3a9024f67585fce0a0d2b3cb470059","EndpointID": "81b94c1b57de26f9c6690942cd78689041d6c27a564e079d7b1f603ecc104b3b","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02"}
}
  • 查询network整体的网络
$ docker network inspect bridge
[{"Name": "bridge","Id": "9e017f5d4724039f24acc8aec634c8d2af3a9024f67585fce0a0d2b3cb470059","Created": "2017-08-09T23:20:28.061678042-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16"}]},"Internal": false,"Attachable": false,"Ingress": false,"Containers": {"9582dbec7981085ab1f159edcc4bf35e2ee8d5a03984d214bce32a30eab4921a": {"Name": "nginx_bridge","EndpointID": "81b94c1b57de26f9c6690942cd78689041d6c27a564e079d7b1f603ecc104b3b","MacAddress": "02:42:ac:11:00:02","IPv4Address": "172.17.0.2/16","IPv6Address": ""}},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}}
]
  • link相关容器
#1. 运行nginx和docker容器
docker run -itd --name redis -p 6379:6379 redis
docker run -d --name nginx -p 80:80 --privileged=true -v /home/wwwroot:/home/wwwroot -v /home/wwwlogs:/home/wwwlogs nginx# 2. 链接网络
#加入nginx到mynet网络
[root@localhost /]# docker network connect mynet nginx
#加入redis到mynet网络
[root@localhost /]# docker network connect mynet redis
#查看mynet网络包含的容器,会发现两个容器都加入当前网络了,后面使用ping命令是能够ping通容器名称的。
[root@localhost /]# docker network inspect mynet# 3. 取消链接网络
#将nginx移除mynet局域网络
docker network disconnect mynet nginx
Reference

[1]. Docker:网络模式详解

[2]. docker network详解、教程

[3]. Docker network整理


官方命令参考

Parent command

Command Description
docker The base command for the Docker CLI.

Child commands

Command Description
docker network connect Connect a container to a network
docker network create Create a network
docker network disconnect Disconnect a container from a network
docker network inspect Display detailed information on one or more networks
docker network ls List networks
docker network prune Remove all unused networks
docker network rm Remove one or more networks
Reference

[1]. (official)docker network

[Docker] docker network 常见模式及常用命令介绍相关推荐

  1. Docker安装及镜像配置(常用命令介绍)

    一.安装Docker 官网 https://docs.docker.com/engine/install/centos/ # 1.卸载旧的版本 yum remove docker \docker-cl ...

  2. Docker(二)安装及常用命令

    1.安装 1.安装虚拟机VMWare 链接:https://pan.baidu.com/s/1Xl7ENUm2gapPOFs-iXHpRQ 提取码:eubm 2.下载centos,我下的是这个版本的 ...

  3. Hadoop生态圈-zookeeper本地搭建以及常用命令介绍

    Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...

  4. Linux中sysstat服务,Linux sysstat常用命令介绍

    一.sysstat 软件安装 下载sysstat软件包,解压 tar zxvf *.tar.gz ./configure make make install 二.sar 命令介绍 sar -h 用法: ...

  5. linux系统防火墙相关问题及常用命令介绍

    今天介绍关于linux系统防火墙:centos5.centos6.redhat6系统自带的是iptables防火墙,centos7.redhat7自带firewall防火墙,ubuntu系统使用的是u ...

  6. Hadoop常用命令介绍

    下面分享一篇 常用的Hadoop命令介绍,希望对Hadoop初学者的朋友有所帮助~ Hadoop常用命令介绍

  7. alsa-util常用命令介绍

    目录 版本获取 前言 常用命令介绍 amixer aplay arecord 前言 我们在audio启动调试的时候,经常会遇到这样一个问题,就是我们调试时间很紧迫,并且所有的组件都在开机调试,有可能这 ...

  8. php基础命令,PHP命令行下的11个常用命令介绍

    本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m.php -v.php --ini.php -h.php --info.php --rf .php --rc .php ...

  9. docker删除es数据_Docker的常用命令

    Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...

最新文章

  1. 使用克隆配置任务配置边缘传输服务器角色
  2. 详解H3C交换机“端口安全”功能
  3. python基本使用-python基本用法
  4. iperf3与netperf使用
  5. 再获“国资”加持,车置宝获南京银行2亿债权融资支持...
  6. cve-2015-0569 安卓手机提权ROOT漏洞 分析
  7. 前端学习(3209):react中类中方法的this指向
  8. linux中的ip地址、子网掩码、端口
  9. vue 对象继承_Vue2.0中组件的继承与扩展是什么
  10. 有一次面一非常想去的 飞鸽传书绿色版 公司
  11. Ext自定义控件 - 自学ExtJS
  12. [禅悟人生]鹰和蜗牛都能登上金字塔尖
  13. 计算尖峰电流的目的_干货 | 谈谈RCD的计算方法
  14. iOS:Autolayout自动布局实例
  15. Problem A: 素MM
  16. Spring框架的七大模块
  17. s:checkboxlist 选中
  18. 06 ,拉格朗日函数 :
  19. 免费分享一个SpringBoot鲜花商城管理系统,很漂亮的
  20. python中quit函数用法_quit(code=None)函数和exit(code=None)函数的使用举例

热门文章

  1. 使用PowerDesigner对数据库建模
  2. 机器学习中的数学——点估计(四):最大后验估计(Maximum Posteriori Probability,MAP)
  3. linux上权限不够怎么改,linux权限不够【操作方案】
  4. 试用炎黄盈动Sam业务流程梳理工具
  5. Gox语言自动转换Excel文件为CSV格式-GX35.2
  6. linux名词解释目录文件,Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在()目...
  7. web2.0的开源程序的下载和演示
  8. 短信怎样写才能吸引客户的眼球
  9. 华为云服务器,被植入挖矿机病毒
  10. Mininet多数据中心网络拓扑流量带宽实验