docker利用namespaces和cgroups实现了应用隔离和资源控制,那么网络层优势如何实现的呢?是直接使用宿主机的网卡设备,还是独立创造出自己的网络设备?以及容器如何与外界通信,下面我们通过简单的说明以及示例,讨论下单机模式下docker的网络模式。

docker单机模式下,主要有四种网络模式,可以在创建容器的时候通过--network参数指定,这四种网络模式如下:

1、--network=bridge:网桥模式,这是docker默认的网络模式,这种模式下,容器创建的时候,会生成一个独立的网卡设备eth0,但是这个网卡设备无法直接同外部通信,需要通过网络设备对veth,将容器内的eth0与docker0网桥连通,然后docker0与宿主机的eth0通过转发绑定端口映射,实现容器内部同外部的通信。

容器创建语法:docker run -d --name container_name --network bridge -p xxx:xxx image_name,由于是默认的,所以不指定--network参数默认就是这种模式

示意图如下:

2、--network=container:这种模式,docker在创建容器的时候会指定使用已经存在的容器的网卡设备作为新建容器的网卡设备。这中模式需要注意,由于是多个容器共用同一个eth0,所以需要注意端口冲突问题。

容器创建语法:docker run -d --name container_name --network container:已经存在的容器名称  -p xxx:xxx image_name

示意图如下:

3、--network=host:这种模式,创建容器的时候,不会新建网卡设备,而是使用宿主机的网卡设备eth0,在这种模式下,容器直接使用宿主机的IP,同样要注意端口的冲突问题。

容器创建语法:docker run -d --name container_name --network host -p xxx:xxx image_name

示意图如下:

4、--network=none:这种模式下,容器无法与外界通信,只能使用容器内部的回环(127.0.0.1)在容器内部通信。

容器创建语法:docker run -d --name container_name --network none  image_name

示意图如下:

以上是单机模式下docker的网络模式,在实际使用中,为了高可用,都是在集群模式下,相关的网络模式将在后面继续讨论。不足之处,欢迎指正。

Docker-单宿主机下的网络模式的更多相关文章

  1. docker 访问宿主机网络

    使用宿主机IP 在安装Docker的时候,会在宿主机安装一个虚拟网关docker0,我们可以使用宿主机在docker0上的IP地址来代替localhost. 首先,使用如下命令查询宿主机IP地址: i ...

  2. 相同宿主机下的dcoker之间通信

    相同宿主机下的dcoker之间通信 docker docker的本质是进程,隔离的资源包括:网卡.回环设备.路由表和 iptables 规则,这些要素构成了一个进程(docker)发起和响应网络请求的 ...

  3. 如何配置 VirtualBox 中的客户机与宿主机之间的网络连接

    如何配置 VirtualBox 中的客户机与宿主机之间的网络连接 作者: Aaron Kili 译者: LCTT rusking | 2017-03-01 13:40   评论: 3 收藏: 3 当你 ...

  4. Docker 与 宿主机之间的文件cp

    Docker 与 宿主机之间的文件cp 第一种方法是官方比较推荐的,其实和第二种方法实现是一样的. 第一种方法例: 将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下. ...

  5. Docker挂载宿主机目录

    一.普通方式直接挂载 1.查看已有容器 docker ps 2.进入容器并挂载 docker run -it -v /root/work/docker:/root/hzbtest tomcat:7.0 ...

  6. 如何在docker和宿主机之间复制文件

    如何在docker和宿主机之间复制文件   最近在用Docker布署hadoop,要将文件上传到HDFS首先文件得在Docker容器中吧,网上提供的方法差不多有三种 1.用-v挂载主机数据卷到容器内  ...

  7. Docker桥接宿主机网络与配置固定IP地址

    有些需求是把这个容器与宿主机在同一个网段,但是本人不建议这样子去操作,因为一个容器本身就是一个封装好的服务.建议去按默认的网络去实现. 临时设置 [root@linux-docker01 ~]# vi ...

  8. [Docker] Windows 宿主环境下,共享或上传文件到容器的方法

    需求如题. 解决方案1 - 挂载目录(适用于创建新的容器) 格式-v 容器目录 或 -v 本地目录:容器目录 范例Linux宿主环境下:使用镜像 nginx:latest,以后台模式启动一个容器,将容 ...

  9. Docker拷贝宿主机与容器中的文件

    如果我们需要将宿主机文件拷贝到容器内可以使用 docker cp 命令,也可以将文件从容器内拷贝到宿主机 将宿主机文件拷贝到容器内 docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目 ...

随机推荐

  1. EF的应用

    EF是 EntityFramework 的简称.在程序和数据库交互的过程中,起到了极大的方便. EF的使用 首先在需要使用EF的项目单击,然后 Ctrl+Shift+a 找到ADO.NET实体数据模型 ...

  2. [转]MS Excel VBO option missing in Blue Prism

    本文转自:https://stackoverflow.com/questions/48706743/ms-excel-vbo-option-missing-in-blue-prism 问: I am ...

  3. SQLServer之修改用户自定义数据库用户

    修改用户自定义数据库用户注意事项 默认架构将是服务器为此数据库用户解析对象名时将搜索的第一个架构. 除非另外指定,否则默认架构将是此数据库用户创建的对象所属的架构. 如果用户具有默认架构,则将使用默认 ...

  4. 最简单的Nginx讲解--HTTP服务器、正向代理、反向代理、负载均衡

    1. Nginx 1.1 Nginx简介 Nginx是俄罗斯人开发,开源的,免费的. Nginx功能: 1) nginx作为http服务器:类似apache,tomcat,遵循http协议. a) 访 ...

  5. HNOI2019 苟命记

    Day0 瞎看了看博客,然后看了看wf题,看了一下午柯南剧场版... 后来发现,复习根本没用,因为我根本没学过. Day1 首先随便看了看三道题,觉得 \(T1\) 挺可做的,\(T2\) 看起来是什 ...

  6. js取数组最大值的四种方式

    var arr = [7,2,0,-3,5];1.apply()应用某一对象的一个方法,用另一个对象替换当前对象 var max = Math.max.apply(null,arr);console. ...

  7. MySQL 多表查询 学习与练习

    一.介绍 首先先准备表 员工表和部门表 #建表 create table department( id int, name varchar(20) ); create table employee1( ...

  8. vue2.0 日历日程表 ,可进行二次开发.

    由于工作业务需求,要写一个日程表,日程表写之前 要先生成日历,废话不多说,直接 上代码: <!DOCTYPE html> <html lang="zh-CN"&g ...

  9. 腾迅云CDN的使用

    一开始,我是想和七牛云一样,将腾迅云的对象存储作为网盘使用,不过在折腾的时间,搞不清楚腾迅云CDN的用法,最后看文档,看博客,大概了解了 这里讲两种用法,一种是结合对象存储,作一个静态网站或下载站,但 ...

  10. building tool

    Build Tool的含义是什么? building tool中文名称叫构建工具,BuildTools.jar是我们构建Bukkit,CraftBukkit,Spigot和Spigot-API的解决方 ...