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

1、端口映射

    从外部访问容器应用

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

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

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

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

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

    映射所有接口地址

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

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

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

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

[plain]  view plain  copy
  1. docker run -d -p 127.0.0.1:3306:3306 mysql  

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

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

[plain]  view plain  copy
  1. doccker run -d -p 127.0.0.1::3306 mysql  
    也可以使用udp来标记udp端口:

[plain]  view plain  copy
  1. doccker run -d -p 127.0.0.1:3386:3386/udp 某个镜像  

    查看端口映射配置

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

[plain]  view plain  copy
  1. docker port 容器ID 3306  
    容器有自己的内部往来和IP地址:

[plain]  view plain  copy
  1. docker inspect 容器ID  
    然后会输出一大堆信息。

2、容器互联

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

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

    自定义容器名

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

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

[plain]  view plain  copy
  1. docker run -d -p --name db mysql  
    容器的命名必须是唯一的。

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

    容器互联

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

    下面是一个示例:

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

[plain]  view plain  copy
  1. docker run -d --name db training/postgres  

  • 然后创建web容器:

[plain]  view plain  copy
  1. 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容器的环境变量:

[plain]  view plain  copy
  1. 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通过端口映射和容器互联,优雅的提供了网络配置功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值