博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 使用指南 (三)—— 网络配置
阅读量:5310 次
发布时间:2019-06-14

本文共 2144 字,大约阅读时间需要 7 分钟。

版权声明:本文由田飞雨原创文章,转载请注明出处: 

文章原文链接:

来源:腾云阁 

本次实验环境: CentOS 6.7 x86_64

Docker 配置容器的步骤是:

1.创建一对虚拟接口
2.在主Docker主机内部给它一个唯一的名称,比如veth65f9,绑定它到docker0或者Docker使用的任何网桥上
3.让其他的接口FQ进入新的容器(已经提供了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 showbridge name bridge id       STP enabled interfacesdocker0     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 模式

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

 

转载于:https://www.cnblogs.com/purpleraintear/p/6012695.html

你可能感兴趣的文章
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>