阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下Docker固定IP配置及桥接

402次阅读
没有评论

共计 5188 个字符,预计需要花费 13 分钟才能阅读完成。

一、Docker 的四种网络模式
Docker 在创建容器时有四种网络模式,bridge 为默认不需要用 –net 去指定,其他三种模式需要在创建容器时使用 –net 去指定。

bridge 模式,使用 –net=bridge 指定,默认设置。
none 模式,使用 –net=none 指定。
host 模式,使用 –net=host 指定。
container 模式,使用 –net=container: 容器名称或 ID 指定。(如:–net=container:30b668ccb630)

bridge 模式:docker 网络隔离基于网络命名空间 <Network Namespace>,在物理机上创建 docker 容器时会为每一个 docker 容器分配网络命名空间,并且把容器 IP 桥接到物理机的虚拟网桥上。

none 模式:此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置。

host 模式:此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个 Network Namespace,并且共享物理机的所有端口与 IP,并且这个模式认为是不安全的。

container 模式:此模式和 host 模式很类似,只是此模式创建容器共享的是其他容器的 IP 和端口而不是物理机,此模式容器自身是不会配置网络和端口,创建此模式容器进去后,你会发现里边的 IP 是你所指定的那个容器 IP 并且端口也是共享的,而且其它还是互相隔离的,如进程等。

二、Docker 配置自己的网桥
1)、自定义新网桥

root@Docker:~# dpkg -l | grep bridge*        #查看是否有安装 brctl 命令包
ii  bridge-utils  1.5-6Ubuntu2    amd64        Utilities for configuring the Linux Ethernet bridge

root@Docker:~# apt-get install bridge-utils  #安装 brctl 命令包

root@Docker:~# docker -v                    #docker 版本

Docker version 1.5.0, build a8a31ef

root@Docker:~# ps -ef | grep docker          #正在运行 
root      6834    1  0 16:28 ?        00:00:00 /usr/bin/docker -d

root@Docker:~# service docker stop          #停止

root@Docker:~# ifconfig | grep docker0      #docker 默认网桥
docker0  Link encap: 以太网  硬件地址 56:84:7a:fe:97:99

root@Docker:~# ifconfig docker0 down        #停止 docker 默认网桥

root@Docker:~# brctl show                    #查看物理机上有哪些网桥

root@Docker:~# brctl delbr docker0          #删除 docker 默认网桥

root@Docker:~# brctl addbr docker_new0      #自定义网桥

root@Docker:~# ifconfig docker_new0 192.168.6.1 netmask 255.255.255.0    #给自定义网桥指定 IP 和子网

root@Docker:~# ifconfig | grep docker_new0  #查看发现自定义网桥已经启动
docker_new0 Link encap: 以太网  硬件地址 0a:5b:26:48:dc:04 
          inet 地址:192.168.6.1  广播:192.168.6.255  掩码:255.255.255.0

root@Docker:~# echo ‘DOCKER_OPTS=”-b=docker_new0″‘ >> /etc/default/docker #指定网桥写入 docker 配置文件

root@Docker:~# service docker start          #启动 docker

root@Docker:~# ps -ef | grep docker          #成功启动,并且成功加载了 docker_new0
root    21345    1  0 18:44 ?        00:00:00 /usr/bin/docker -d  -b=docker_new0

root@Docker:~# brctl show                    #查看当前网桥下是否有容器连接
bridge name              bridge id              STP enabled    interfaces
docker_new0            8000.fa3ce276c3b9            no           

root@Docker:~# docker run -itd CentOS:centos6 /bin/bash                  #创建容器测试

root@Docker:~# docker attach 7f8ff622237f                                #进入容器

[root@7f8ff622237f /]# ifconfig eth0 | grep addr                          #容器 IP 已经和自定义网桥一个网段,该容器 IP 为 DHCP 自动分配,不属于指定固定 IP
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:06:02 
          inet addr:192.168.6.2  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::42:c0ff:fea8:602/64 Scope:Link

root@Docker:~# brctl show                    #该网桥上已经连接着一个网络设备了
bridge name                bridge id              STP enabled    interfaces
docker_new0            8000.fa3ce276c3b9            no          veth17f560a

注:veth 设备是成双成对出现的,一端是容器内部命名 eth0,一端是加入到网桥并命名的 veth17f560a(通常命名为 veth*),他们组成了一个数据传输通道,一端进一端出,veth 设备连接了两个网络设备    并实现了数据通信。

2)、Pipework 配置 Docker 固定 IP
我们在自定义网桥的基础上去做固定 IP 配置

Pipework 有个缺点就是给容器指定完固定 IP,如果容器重启,那么固定 IP 会消失,还需要重新指定,容器量大时可写个脚本来完成

root@Docker:~#  wget https://github.com/jpetazzo/pipework/archive/master.zip #下载 pipework

root@Docker:~#  unzip master.zip            #解压

root@Docker:~# cp pipework-master/pipework  /usr/bin/                      #拷贝 pipework 到 /usr/bin/ 下

root@Docker:~# chmod +x /usr/bin/pipework    #赋予该命令执行权限

root@Docker:~# pipework docker_new0 -i eth1 $(docker run -itd -p 9197:80 centos:centos6 /bin/bash) 192.168.6.27/24@192.168.6.1 #创建容器, 并指定固定 IP
格式:pipework  网桥名 -i 指定在那块网卡上配置  < 容器名 or 容器 ID>  指定容器内 IP/ 子网 @网关  注:容器内网关就是物理机网桥的 IP             

 

root@Docker:~# docker attach 2966430e2dbe    #进入新容器
 

[root@2966430e2dbe /]# ifconfig              #容器内 IP 为指定的 IP 192.168.6.27
eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:06:05                   
          inet addr:192.168.6.7  Bcast:0.0.0.0  Mask:255.255.255.0        #docker_new0 网桥创建容器时 DHCP 分配的 IP

eth1      Link encap:Ethernet  HWaddr 82:DB:F7:A3:33:92 
          inet addr:192.168.6.27  Bcast:0.0.0.0  Mask:255.255.255.0        #pipework 指定的固定 IP,网桥还是 docker_new0

[root@2966430e2dbe /]# route -n              #查看路由路径
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
0.0.0.0        192.168.6.1    0.0.0.0        UG    0      0        0 eth0
192.168.6.0    0.0.0.0        255.255.255.0  U    0      0        0 eth0
192.168.6.0    0.0.0.0        255.255.255.0  U    0      0        0 eth1

[root@2966430e2dbe /]# ping www.linuxidc.com    #测试网络
PING www.linuxidc.com (119.75.218.70) 56(84) bytes of data.
64 bytes from 119.75.218.70: icmp_seq=1 ttl=127 time=3.98 ms
64 bytes from 119.75.218.70: icmp_seq=2 ttl=127 time=2.98 ms

[root@2966430e2dbe /]# netstat -anptu | grep 80                              #容器内 80 端口已经开启
tcp        0      0 :::80                      :::*                        LISTEN      –

root@Docker:~# telnet 192.168.6.27 80        #物理机上测试指定的 IP 是否和映射的端口等通信正常
Trying 192.168.6.27…
Connected to 192.168.6.27.
Escape character is ‘^]’.

root@Docker:~# iptables-save > iptables-rules #拷贝防火墙规则到本地文件

root@Docker:~# vi iptables-rules              #打开规则文件查看
你会发现你物理机的防火墙自动添加了很多条规则,这个是容器到网桥到本地网卡到公网的地址转换通信规则

Ubuntu 下 Docker 固定 IP 配置及桥接

Pipework 更多命令用法请参照:
https://github.com/jpetazzo/pipework

CentOS 6/ 7 系列安装 Docker http://www.linuxidc.com/Linux/2014-07/104768.htm

Docker 的搭建 Gitlab CI 全过程详解 http://www.linuxidc.com/Linux/2013-12/93537.htm

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5188字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7963064
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...