配置 docker 静态 ip 地址

本贴最后更新于 2295 天前,其中的信息可能已经沧海桑田

一、docker 的网络模式

  1. Docker 有以下 4 种网络模式:
    host 模式,使用--net=host 指定。
    container 模式,使用--net=container:NAME_or_ID 挃定。
    none 模式,使用--net=none 指定。
    bridge 模式,使用--net=bridge 指定,默认就是 bridge 模式。
    默认选择 bridge 的情况下,容器启动后会通过 DHCP 获取一个地址,这可能不是我们想要的,在
    centos7 系统上, docker 环境下可以使用 pipework 脚本对容器分配固定 IP(这个 IP 可以是和物理机同网段 IP)。
    注: docker 默认是 bridge(--net=bridge)模式,相当于 VMware 中 NAT 模式。
    docker 环境下可以使用 pipework 脚本对容器分配固定 IP,相当于 VMware 中桥接模式。注:Pipework 有个缺陷,容器重吭后 IP 设置会自动消失,需要重新设置。
  2. 配置桥接网络
    桥接本地物理网络的目的,是为了局域网内用户方便访问 docker 实例中服务,丌要需要各种端口映射即可访问服务。 但是这样做,又违背了 docker 容器的安全隔离的原则,工作中辩证的选择.

创建桥设备 br0:
安装包:
http://www.rpmfind.net/linux/rpm2html/search.php?query=bridge-utils(x86-64)

[root@bogon ~]# rpm -ivh /mnt/Packages/bridge-utils-1.5-9.el7.x86_64.rpm 准备中... ################################# [100%] 软件包 bridge-utils-1.5-9.el7.x86_64 已经安装 [root@bogon ~]# cd /etc/sysconfig/network-scripts/ [root@bogon network-scripts]# cp ifcfg-ens33 /opt/ [root@bogon network-scripts]# vim ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="d18d860b-c4ae-4b23-8851-3847cc811fa6" DEVICE="ens33" ONBOOT="yes" IPV6_PRIVACY="no" BRIDGE="br0"

#删除 IP 地址相关内容,删除下面 几行
IPADDR=172.17.148.238
NETMASK=255.255.240.0
文末插入 BRIDGE="br0"

创建生成 ifcfg-br0 文件

[root@bogon network-scripts]# vim ifcfg-br0 DEVICE="br0" NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Bridge" BOOTPROTO="dhcp" DNS1=114.114.114.114

查看当前网卡状态:

[root@bogon ~]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.89.209 netmask 255.255.255.0 broadcast 192.168.89.255 inet6 fe80::a0a0:45ff:fe1b:5e0b prefixlen 64 scopeid 0x20<link> ether 00:0c:29:33:7b:83 txqueuelen 1000 (Ethernet) RX packets 77 bytes 9297 (9.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20 bytes 2357 (2.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:a1ff:fee8:1077 prefixlen 64 scopeid 0x20<link> ether 02:42:a1:e8:10:77 txqueuelen 0 (Ethernet) RX packets 33599 bytes 2213263 (2.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 37274 bytes 74193506 (70.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:33:7b:83 txqueuelen 1000 (Ethernet) RX packets 523587 bytes 226962732 (216.4 MiB) RX errors 0 dropped 2 overruns 0 frame 0 TX packets 103893 bytes 9210892 (8.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 638 bytes 57348 (56.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 638 bytes 57348 (56.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 veth30787ca: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::e872:ffff:fe01:47ae prefixlen 64 scopeid 0x20<link> ether ea:72:ff:01:47:ae txqueuelen 0 (Ethernet) RX packets 8 bytes 648 (648.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 23 bytes 1854 (1.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vethad3caa5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::3cfc:d0ff:feea:45a8 prefixlen 64 scopeid 0x20<link> ether 3e:fc:d0:ea:45:a8 txqueuelen 0 (Ethernet) RX packets 8 bytes 648 (648.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24 bytes 1944 (1.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

可以看出 br0 网卡已变成桥接类型网卡。

还有另一种方法:
[root@bogon ~]# git clone https://github.com/jpetazzo/pipework.git

2.使用 pipework

[root@bogon ~]# git clone https://github.com/jpetazzo/pipework.git

[root@bogon pipework]# cp pipework /usr/local/bin/

[root@bogon ~]# docker run -itd --net=none --privileged=true docker.io/centos:latest /bin/bash #开启特权模式

pipework 网桥名 容器实例 ID 分配给容器的 IP /掩码 @ 网关

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    955 引用 • 944 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
cuijianzhe
6 号黑客成员, 2000-03-03 23:22:13 加入

推荐标签 标签

  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    86 引用 • 165 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    497 引用 • 934 回帖
  • OnlyOffice
    4 引用 • 18 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 446 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 7 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    947 引用 • 1460 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 684 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 42 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 232 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 680 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 344 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 280 关注
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 314 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 625 关注
  • 叶归
    12 引用 • 56 回帖 • 23 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    229 引用 • 476 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 167 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 177 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 110 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    182 引用 • 3882 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 181 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    591 引用 • 3528 回帖 • 1 关注
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 195 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖