版权声明:本文由田飞雨原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/95

来源:腾云阁 https://www.qcloud.com/community

本次实验环境:腾讯云服务器 CentOS 6.7 x86_64

Docker 配置容器的步骤是:
1.创建一对虚拟接口
2.在主Docker主机内部给它一个唯一的名称,比如veth65f9,绑定它到docker0或者Docker使用的任何网桥上
3.让其他的接口翻墙进入新的容器(已经提供了lo接口),在容器的独立和唯一网络接口命名空间内,重新命名它为更漂亮的名字eth0,名称不要和其他的物理接口冲突
4.在网桥的网络地址访问内给容器的eth0一个新的IP地址,设置它的缺省路由为Docker主机在网桥上拥有的IP地址。

这些步骤结束后,容器将立即拥有一个eth0(虚拟)网卡,并会发现它自己可以和其他的容器以及互联网通讯。
你可以使用 –net= 这个选项来执行 docker run 启动一个容器,这个选项有一下可选参数。

–net=bridge— 默认选项,用网桥的方式来连接docker容器。
–net=host— docker跳过配置容器的独立网络栈。
–net=container:NAME_or_ID— 告诉docker让这个新建的容器使用已有容器的网络配置。
–net=none— 告诉docker为新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,所以只能访问本地网络,没有外网。

一.桥接模式

这是 docker 默认的网络模式,Docker 后台程序会创建 docker0,一个虚拟的以太网桥,用于自动转发与之连接的任意网络接口间的数据包。在bridge模式下,连在同一网桥上的容器可以相互通信。

[root@sta2 docker]# docker run -it -P --name mynginx nginx #为容器做端口映射

使用桥接模式时,docker会创建一个docker0 的网桥,并将这个网络设备加入到docker0网桥中,可以通过brctl show命令查看。

[root@sta2 ~]#  brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.3e2d35d38bae no vethab6aea2

从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。

容器中的网络配置:

查看映射端口配置:

[root@sta2 docker]# docker ps -l

或者使用以下方法:

[root@sta2 docker]# docker port mynginx 443/tcp -> 0.0.0.0:32774 80/tcp -> 0.0.0.0:32775

当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口,nginx 映射的端口固定为32774 和 32775。

查看访问日志:
[root@sta2 docker]# docker logs -f mynginx

使用 -p(小写的)则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器,-p 标记可以多次使用来绑定多个端口。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort 。

可以使用 hostPort:containerPort 映射所有接口地址:

# docker run -d -p 5000:5000 --name mydocker nginx

此时默认会绑定本地所有接口上的所有地址。
可以使用 ip:hostPort:containerPort 格式指定映射使用一个特定地址,映射到指定地址的指定端口

# docker run -d -p 127.0.0.1:5000:5000 --name mydocker nginx

使用 ip::containerPort 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口。映射到指定地址的任意端口:

# docker run -d -p 127.0.0.1::5000 --name mydocker nginx
docker 做端口映射时会生成 iptables 规则,端口映射前的 iptables 规则:

端口映射后的 iptables 规则:

二.host 模式

此模式使用主机的网络

# docker run -it --name feiyu-host --net=host busybox sh

三.other container 模式

这种模式下与其他容器共享一个网络

# docker run -it --name feiyu-con --net=container:feiyu busybox sh

四.none 模式

这种模式只能访问本地网络,没有外网。

Docker 使用指南 (三)—— 网络配置的更多相关文章

  1. Docker Network Configuration 高级网络配置

    Network Configuration TL;DR When Docker starts, it creates a virtual interface named docker0 on the ...

  2. DOCKER学习_005:Flannel网络配置

    一 简介 Flannel是一种基于overlay网络的跨主机容器网络解决方案,也就是将TCP数据包封装在另一种网络包里面进行路由转发和通信, Flannel是CoreOS开发,专门用于docker多机 ...

  3. wr720n v4 折腾笔记(三):网络配置与扩充USB

    0x01 前言 网络配置比较简单,但是USB拓展就麻烦许多了,这里由于overlay的内存分配问题导致软件安装失败,这里找到了一种方法就是直接从uboot刷入南浦月大神的wr720n的openwrt固 ...

  4. (转) docker跨主机 macvlan 网络配置

    原文链接 https://github.com/alfredhuang211/study-docker-doc/blob/master/docker%E8%B7%A8%E4%B8%BB%E6%9C%B ...

  5. Docker 使用指南 (四)—— 数据卷的使用

    一.数据卷的使用 有时候需要使用数据库,但是又希望它的数据能保存在本地,Docker中提供了数据卷可以供你方便的操作数据.数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用 ...

  6. 5、Docker网络配置(单机)

    一.概述 以下内容参考:https://docs.docker.com/network/#network-drivers Docker容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连 ...

  7. Docker 入门指南

    Docker 入门指南 目录 基础概念 安装教程 基本操作 常用安装 构建操作 容器编排 壹.基础概念 什么是Docker? Docker是基于Go开发的应用容器引擎,属于 Linux 容器的一种封装 ...

  8. Docker入门篇(二)之docker的单主机网络

    Docker 安装时会自动在host上创建三个网络,我们可用 docker network ls命令查看: [root@localhost ~]# docker network ls NETWORK ...

  9. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...

随机推荐

  1. Bootstrap3.0 栅格系统背后的精妙魔法(Bootstrap3.0的栅格布局系统实现原理)

    这个标题取的有点奇怪,怪我翻译的有问题吧.英文学平有限,有道词典和google翻译齐上阵是必须的.还好翻译的不是小说,对于技术文章,还是能勉强翻过来的. 本文主要讲解了Bootstrap3.0的栅格布 ...

  2. LPD打印机服务是什么意思

    line Printer Daemon(LPD)行式打印机后台程序,用于假脱机打印工作的UNIX后台程序(后台服务).行式打印机后台程序是一个安装在UNIX打印服务器上的后台程序.它的功能是等待接受客 ...

  3. Mac下面的SecureCRT(附破解方案) 更新到最新的7.2的破解方案

    继续更新到7.2的破解.只是升级了下secureCRT到7.2,方法还是不变 相信很多人升级到了7.2的SecureCRT之后原来的破解方案失效了,一直也有人问新的破解方案,发现了,不敢独享放上crt ...

  4. Hive Tunning(二)优化存储

    接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储. 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要讲一下ORCFile. Built-in F ...

  5. 缓存之 ACache

    1.android缓存的介绍 Android开发本质上就是手机和互联网中的webserver之间进行通信,就必定须要从服务端获取数据.而重复通过网络获取数据是比較耗时的.特别是訪问比較多的时候.会极大 ...

  6. Qt 事件处理的五个层次

    看了这篇文章(见http://devbean.blog.51cto.com/448512/231861),然后经过自己的思考,把Qt事件处理的五个层次.同时也是Qt时间处理的流程画了出来.若有不对请批 ...

  7. 【转】MFC 字体LOGFONT

    Windows的字体LOGFONT LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下:typedef struct tagLOGFONTA{    LONG      ...

  8. e681. 基本的打印程序

    Note that (0, 0) of the Graphics object is at the top-left of the actual page, outside the printable ...

  9. ffmpeg avformat_open_input返回失败的解决办法

    用ffmpeg做的第一个程序,参考网上的代码,就出现了一些问题,其中avformat_open_input返回失败. 下面是我在网上收集到的失败信息的相关解决: /////////////////// ...

  10. 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)

    题目:输入一个链表的头结点,从尾到头反过来打印出每一个节点的值 考察 单链表操作.栈.递归等概念. 理解:要实现单链表的输出,那么就须要遍历.遍历的顺序是从头到尾.而节点输出的顺序是从尾到头.因此,先 ...