[Docker] docker network 常见模式及常用命令介绍
前言
前端时间, 使用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 常见模式及常用命令介绍相关推荐
- Docker安装及镜像配置(常用命令介绍)
一.安装Docker 官网 https://docs.docker.com/engine/install/centos/ # 1.卸载旧的版本 yum remove docker \docker-cl ...
- Docker(二)安装及常用命令
1.安装 1.安装虚拟机VMWare 链接:https://pan.baidu.com/s/1Xl7ENUm2gapPOFs-iXHpRQ 提取码:eubm 2.下载centos,我下的是这个版本的 ...
- Hadoop生态圈-zookeeper本地搭建以及常用命令介绍
Hadoop生态圈-zookeeper本地搭建以及常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载zookeeper软件 下载地址:https://www.ap ...
- Linux中sysstat服务,Linux sysstat常用命令介绍
一.sysstat 软件安装 下载sysstat软件包,解压 tar zxvf *.tar.gz ./configure make make install 二.sar 命令介绍 sar -h 用法: ...
- linux系统防火墙相关问题及常用命令介绍
今天介绍关于linux系统防火墙:centos5.centos6.redhat6系统自带的是iptables防火墙,centos7.redhat7自带firewall防火墙,ubuntu系统使用的是u ...
- Hadoop常用命令介绍
下面分享一篇 常用的Hadoop命令介绍,希望对Hadoop初学者的朋友有所帮助~ Hadoop常用命令介绍
- alsa-util常用命令介绍
目录 版本获取 前言 常用命令介绍 amixer aplay arecord 前言 我们在audio启动调试的时候,经常会遇到这样一个问题,就是我们调试时间很紧迫,并且所有的组件都在开机调试,有可能这 ...
- php基础命令,PHP命令行下的11个常用命令介绍
本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m.php -v.php --ini.php -h.php --info.php --rf .php --rc .php ...
- docker删除es数据_Docker的常用命令
Docker的常用命令 docker version#显示docker的版本信息 docker info#显示docker的系统信息,包括镜像和容器的数量 docker --help#docker帮助 ...
最新文章
- 使用克隆配置任务配置边缘传输服务器角色
- 详解H3C交换机“端口安全”功能
- python基本使用-python基本用法
- iperf3与netperf使用
- 再获“国资”加持,车置宝获南京银行2亿债权融资支持...
- cve-2015-0569 安卓手机提权ROOT漏洞 分析
- 前端学习(3209):react中类中方法的this指向
- linux中的ip地址、子网掩码、端口
- vue 对象继承_Vue2.0中组件的继承与扩展是什么
- 有一次面一非常想去的 飞鸽传书绿色版 公司
- Ext自定义控件 - 自学ExtJS
- [禅悟人生]鹰和蜗牛都能登上金字塔尖
- 计算尖峰电流的目的_干货 | 谈谈RCD的计算方法
- iOS:Autolayout自动布局实例
- Problem A: 素MM
- Spring框架的七大模块
- s:checkboxlist 选中
- 06 ,拉格朗日函数 :
- 免费分享一个SpringBoot鲜花商城管理系统,很漂亮的
- python中quit函数用法_quit(code=None)函数和exit(code=None)函数的使用举例
热门文章
- 使用PowerDesigner对数据库建模
- 机器学习中的数学——点估计(四):最大后验估计(Maximum Posteriori Probability,MAP)
- linux上权限不够怎么改,linux权限不够【操作方案】
- 试用炎黄盈动Sam业务流程梳理工具
- Gox语言自动转换Excel文件为CSV格式-GX35.2
- linux名词解释目录文件,Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在()目...
- web2.0的开源程序的下载和演示
- 短信怎样写才能吸引客户的眼球
- 华为云服务器,被植入挖矿机病毒
- Mininet多数据中心网络拓扑流量带宽实验