扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • 宝典简介

    • Docker简明教程
    • Docker 简介
  • Docker 核心技术

  • Docker 快速入门

  • Docker run 参数详解

  • 高级网络配置

    • 高级网络配置
    • Docker创建网络步骤
    • 定制docker0
    • 容器与外部网络通信
    • 配置DNS
    • 为主机绑定容器端口
  • Docker 私有仓库
  • 其他

扫码订阅《 》或入驻星球,即可阅读文章!

高级网络配置


jiajially

当docker启动时,它会在宿主机器上创建一个名为docker0的虚拟网络接口。它会从RFC 1918定义的私有地址中随机选择一个主机不用的地址和子网掩码,并将它分配给docker0。

例如我启动docker几分钟后它选择了172.17.42.1/16-一个16位的子网掩码为主机和它的容器提供了65,534个ip地址。

注意: 本文讨论了Docker的高级网络配置和选项。通常你不会用到这些。如果你想查看一个较为简单的Docker网络介绍和容器概念介绍来着手,请参见 Dockers快速入门.

但docker0并不是正常的网络接口。它只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥。它可以使容器与主机相互通信。每次Docker创建一个容器,它就会创建一对对等接口(peer interface),类似于一个管子的两端-在这边可以收到另一边发送的数据包。Docker会将对等接口中的一个做为eth0接口连接到容器上,并使用类似于vethAQI2QT这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有veth*接口绑定到docker0桥接网卡上,Docker在主机和所有Docker容器间创建一个共享的虚拟子网。

本文将会讲解使用Docker选项的所有方式,并且在高级模式下使用纯linux网线配置命令来调整,补充,或完全替代Docker的默认网络配置。

# Docker选项快速指南

这里有一份关于Docker网络配置的命令行选项列表,省去您查找相关资料的麻烦。

一些网络配置的命令行选项只能在服务器启动时提供给Docker服务器。并且一旦启动起来就无法改变。

一些网络配置命令选项只能在启动时提供给Docker服务器,并且在运行中不能改变:

  • -b BRIDGE或--bridge=BRIDGE— see 建立自己的网桥

  • --bip=CIDR— see 定制docker0

  • -H SOCKET...或--host=SOCKET...— 它看起来像是在设置容器的网络,但实际却恰恰相反:它告诉Docker服务器要接收命令的通道,例如“run container"和"stop container"。

  • --icc=true|false— see 容器间通信

  • --ip=IP_ADDRESS— see 绑定容器端口

  • --ip-forward=true|false— see 容器间通信

  • --iptables=true|false— see 容器间通信

  • --mtu=BYTES— see 定制docker0

有两个网络配置选项可以在启动时或调用docker run时设置。当在启动时设置它会成为docker run的默认值:

  • --dns=IP_ADDRESS...— see 配置DNS

  • --dns-search=DOMAIN...— see 配置DNS

最后,一些网络配置选项只能在调用docker run时指出,因为它们要为每个容器做特定的配置:

  • -h HOSTNAME或--hostname=HOSTNAME— see 配置DNS 和 Docker与容器连接原理

  • --link=CONTAINER_NAME:ALIAS— see 配置DNS 和 容器间通信

  • --net=bridge|none|container:NAME_or_ID|host— see Docker与容器连接原理

  • -p SPECor--publish=SPEC— see 绑定容器端口

  • -P或--publish-all=true|false— see 绑定容器端口