Docker基础教程——网络基础配置

原文出自:http://blog.csdn.net/anxpp/article/details/52495295

    我们使用Docker发布的组件,通常都离不开网络的,下面介绍Docker的网络基础配置。

1、端口映射

    从外部访问容器应用

    启动容器时,如果不知道对应参数,在容器外部是无法通过网络访问容器内部的。

    可以通过-p或-P参数指定端口映射。

    使用-P时,Docker会随机映射一个49000~49900的端口到容器内部开放的端口。

    -p会映射到指定的端口,支持的格式:

  • ip地址:主机端口:容器端口
  • ip地址::容器端口
  • 主机端口:容器端口

    映射所有接口地址

    主机端口:容器端口 格式将本地端口映射到容器端口的命令如下:

docker run -d -p 3306:3306 mysql
    此时默认会帮顶本地所有接口上的地址,可以多次使用-p帮顶多个端口。

    映射到指定地址的指定端口

    ip地址:主机端口:容器端口 格式的参数几乎与上面的差不多,不过多限制了地址,比如需要指定特定的地址的访问(如127.0.0.1):

docker run -d -p 127.0.0.1:3306:3306 mysql

    映射到指定地址的任意端口

    ip地址::容器端口 格式的参数,可以绑定localhost的任意端口到容器的指定端口上,本地主机会自动分配一个端口:

doccker run -d -p 127.0.0.1::3306 mysql
    也可以使用udp来标记udp端口:

doccker run -d -p 127.0.0.1:3386:3386/udp 某个镜像

    查看端口映射配置

    使用docker port命令查看端口映射配置:

 docker port 容器ID 3306
    容器有自己的内部往来和IP地址:

docker inspect 容器ID
    然后会输出一大堆信息。

2、容器互联

    容器的连接系统是除了端口映射外另一种可以与容器中应用进行交互的方式。

    它会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

    自定义容器名

    连接系统根据容器的名称执行,所以需要自定义一个较为简单容易区分的容器名。

    自定义命名使用--name参数,这个在之前的文章中已经遇到过了:

docker run -d -p --name db mysql
    容器的命名必须是唯一的。

    执行docker run时,如果加上--rm参数,容器在终止后悔立即被删除,但是不能与-d参数一同使用。

    容器互联

    使用--link参数可以让容器间建立安全的连接进行交互。

    下面是一个示例:

  • 首先创建一个数据库的容器:

docker run -d --name db training/postgres

  • 然后创建web容器:

docker run -d -P --name web --link db:db training/webapp python app.py
    此时db容器和web容器加你互联关系。

    --link参数:--link name:alias,name是要连接的容器的名字,alias是这个连接的别名。

    可以使用docker ps查看容器信息,其中names列就能看出互联的状态。


    docker在两个互联的容器之间建立了一个安全隧道,不需要吧他们的端口映射到宿主主机上,也可以避免端口的暴露。

    Docker通过两种方式公开连接信息:

  • 环境变量
  • 更新/etc/hosts文件

    使用env命令查看刚刚的web容器的环境变量:

docker run --rm --name web2 --link db:db training/webapp env
    ...

    其中DB_开头的环境变量是供web容器连接db容器使用,前缀采用大写的连接别名。

    除了环境变量,Docker还添加host信息到父容器的/etc/hosts文件。其中web容器会以自己的ID作为默认主机名,db容器以db作为主机名。

    比如多个web到db容器的情况,可以链接多个子容器到父容器上。


小结

    Docker通过端口映射和容器互联,优雅的提供了网络配置功能。

各章重点<br>Ch1.(1次课) <br> 1.1 网络发展的三个时代,各时代网络的结构、特征及演变。<br> 1.2 网络的概念。网络、终端分时系统、多机系统、分布式系统之间的区别。<br> 1.3 网络的功能。<br> 1.4 网络的分类。按距离、拓扑、介质访问控制方式。<br><br>Ch2.(1次课)<br> 2.1 基本概念<br> 2.2 信道。信道容量-两个公式,有噪音信道<br> 2.3 网络介质<br> 2.4 编码<br> 2.5 多路复用(FDM、TDM)<br> 2.6 交换(线路、报文、包)<br> 2.7 差错控制<br><br>Ch3.(1次课)<br> 3.1体系结构<br> 协议、服务、接口<br> 面向连接服务、无连接服务<br> 多层通信的实质<br> 数据封装<br> 3.2-3.3 OSI模型<br> 每层的主要功能<br> 3.4以TCP/IP为重点进行介绍<br> TCP/IP各层的功能、服务<br> 三次握手<br> 主要协议简介(TCP、UDP、IP、ICMP、ARP、RARP)<br> IP地址、子网、子网掩码的概念,端口号的概念<br><br>Ch4.(1次课)<br> 4.1 概述<br> 4.2 介质访问控制方法。重点是CSMA/CD和TOKEN-PASSING,两者的优点和缺点<br> 4.3 以太网。10Base-5、10Base-2、10Base-T<br> 4.4 高速网络技术。<br> 4.5(自学)<br><br>Ch5.(1次课)<br> 5.1 概述<br> 5.2 公共传输系统<br> 5.3-5.4(简单介绍)<br> 5.5 ISDN。重点介绍ISDN的综合业务特点,接入方法。ISDN的优缺点。<br> 5.6 DDN。重点介绍DDN的特点,与PSTN、X.25的区别。<br> 5.7 X.25。重点介绍特点,DTE、DCE、SVC、PVC、PAD的概念,X.25的优缺点。<br> 5.8 帧中继。特点,与X.25的区别与优势。<br><br>Ch6.(1次课)<br> 6.1 概述<br> 6.2 UNIX<br> 6.3(自学)<br> 6.4 网管的概念和实现方法,网管代理Agent、MIB的概念<br><br>Ch7.(0.5次课)<br> 7.1 网络应用模式(C/S、B/S)<br> 7.2(略)<br><br>Ch8.(0.5次课)<br> 8.1 概述<br> 8.2 接入方式(以PSTN为重点)<br> 8.3 因特网服务。以Telnet、Email、FTP、WWW为重点。安排一次实验,内容为申请免费邮箱(263),互发邮件;通过FTP在SUN工作站与NT服务器之间传输文件。<br><br>Ch9.(2次课+0.5次多媒体演示)<br> 9.1(移到Ch2.)<br> 9.2 网卡。在WIN95上安装网卡驱动、设置IRQ、I/O地址。构造简单的总线型LAN。<br> 9.3 集线器。特点及使用。利用HUB构造简单的LAN。<br> 9.4 网桥。冲突(碰撞)域和广播域的概念。透明网桥的工作原理,源选径网桥简介。<br> 9.5 交换机。网段分割(微化)、交换原理、三种转发方式。与路由器的对比。<br> 9.6 路由器。工作原理,网关简介。<br> 9.7 MODEM。56K技术的实现原理。<br><br>Ch10.(视情况而定)<br> NT原理性和有关企业网的内容(重新组织)(或自学)<br><br>Ch11.(视情况而定)<br> 重点是文件管理、安全、登录文稿和主要命令<br><br><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值