配置桥接网络

  桥接本地物理网络的目的,是为了局域网内用户方便访问 docker 实例中服务,不需要各种端口映射即可访问服务。 但是这样做,又违背了 docker 容器的安全隔离的原则,工作中辩证的选择。

创建桥接设备:

安装包:

[root@openstack ~]# rpm -ivh /mnt/Packages/bridge-utils-1.5-9.el7.x86_64.rpm

把网卡帮到br0桥设备上

[root@openstack ~]# cd /etc/sysconfig/network-scripts/

[root@openstack network-scripts]# cp ifcfg-ens33 /opt/

[root@openstack network-scripts]# vim ifcfg-ens33

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

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=74a03b29-1fe1-4c5c-8361-4c25e321ea47

DEVICE=ens33

ONBOOT=yes

IPADDR=192.168.199.7    删除地址相关的配置

NETMASK=255.255.255.0

GATEWAY=192.168.199.1

DNS=114.114.114.114

DNS2=119.29.29.29

BRIDGE=br0      添加该配置

[root@openstack network-scripts]# vim ifcfg-br0

DEVICE="br0"

NM_CONTROLLED="yes"

ONBOOT="yes"

TYPE="Bridge"

BOOTPROTO=none

IPADDR=192.168.209.7

NETMASK=255.255.255.0

GATEWAY=192.168.209.254

DNS1=114.114.114.114

[root@openstack network-scripts]# systemctl restart network   重启网络服务

查看地址:

[root@openstack network-scripts]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.209.7  netmask 255.255.255.0  broadcast 192.168.209.255
        inet6 fe80::20c:29ff:fe73:f66b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:73:f6:6b  txqueuelen 1000  (Ethernet)
        RX packets 927  bytes 65484 (63.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 345  bytes 45743 (44.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        ether 02:42:ae:a2:84:7e  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:73:f6:6b  txqueuelen 1000  (Ethernet)
        RX packets 978  bytes 82130 (80.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 471  bytes 62022 (60.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
使用pipework给容器绑定静态IP地址

给容器绑定IP地址使用pipework这个工具

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

[root@openstack ~]# cd pipework/

[root@openstack pipework]# ls

docker-compose.yml  doctoc  LICENSE  pipework  pipework.spec  README.md

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

[root@openstack pipework]# ls /usr/local/bin/

pipework

至此pipework安装完毕。

启动容器

[root@openstack ~]# docker run -itd --net=none --privileged=true docker.io/centos:latest bash

[root@openstack ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS              PORTS               NAMES
742430cbc590        docker.io/centos:latest   "bash"              11 hours ago        Up 6 seconds                            goofy_mestorf

[root@openstack ~]# pipework br0 742430cbc590 192.168.209.10/24@192.168.209.254       绑定IP
[root@openstack ~]# ping 192.168.209.10
PING 192.168.209.10 (192.168.209.10) 56(84) bytes of data.
64 bytes from 192.168.209.10: icmp_seq=1 ttl=64 time=0.333 ms

查看容器的IP:

[root@openstack ~]# docker exec -it 742430cbc590 bash

[root@742430cbc590 /]# yum install net-tools -y    docker中没有ifconfig命令。需要安装
[root@742430cbc590 /]# ifconfig
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.209.10  netmask 255.255.255.0  broadcast 192.168.209.255
        inet6 fe80::6435:e4ff:fee5:49e6  prefixlen 64  scopeid 0x20<link>
        ether 66:35:e4:e5:49:e6  txqueuelen 1000  (Ethernet)
        RX packets 459  bytes 363810 (355.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 145  bytes 10285 (10.0 KiB)
        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 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

到此给容器绑定了静态IP,但是有一个缺点就是容器一旦重启地址就会失效。

实战:

使用静态IP启动一个web服务。

在上面的容器的基础上,来做该实验。

[root@openstack ~]# docker exec -it 742430cbc590 bash
[root@742430cbc590 /]# yum install httpd -y      安装服务
[root@742430cbc590 /]# systemctl start httpd    这样启动时不行的
Failed to get D-Bus connection: Operation not permitted
[root@742430cbc590 /]# httpd            使用httpd启动
创建测试页:

[root@742430cbc590 /]# echo "this is a test" > /var/www/html/index.html
测试:

创建docker静态化IP的更多相关文章

  1. Docker容器(五)——Docker静态化IP

    (1).Docker的四种网络模式 Docker有以下四种模式,通过--net=[参数]选项(现在也可以使用--network [参数])指定: host模式:使用宿主机的IP地址和端口.使用--ne ...

  2. 一步步创建第一个Docker App —— 2. 创建 Docker化 主机

    原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...

  3. docker容器化python服务部署(supervisor-gunicorn-flask)

    docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...

  4. 新一代Java程序员必学的Docker容器化技术基础篇

    Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...

  5. spring-boot项目的docker集成化部署(一)

    目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker ...

  6. Docker容器化技术(下)

    Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...

  7. Docker容器化技术(上)

    目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...

  8. DJANGO-天天生鲜项目从0到1-007-首页静态化与缓存

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  9. JSP页面静态化

    Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...

随机推荐

  1. 面试常考的js题目(二)

    1. 已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件: 返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数) 调用 a 之后,返回一个函数 ...

  2. java中的接口和php的接口的区别

    php: 规范: 接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量. 在接口中的抽象方法只能是public的,默认也是public权限. abstract和final修饰符也不能修饰接口中 ...

  3. 【原创】大数据基础之Oozie(4)oozie使用的spark版本升级

    oozie默认使用的spark是1.6,一直没有升级,如果想用最新的2.4,需要自己手工升级 首先看当前使用的spark版本的jar # oozie admin -oozie http://$oozi ...

  4. MVC中的Action过滤器

    Action过滤器可以用在调用动作方法之前或之后,执行一些特殊的逻辑,比如用登录验证: Action过滤器实现IActionFilter接口,该接口有两个方法: public interface IA ...

  5. 服务端相关知识学习(一)之什么是zookeeper

    什么是zookeeper zookeeper是分布式协调服务,可以在分布式系统中共享配置.协调锁资源.提供命名服务那分布式协调服务又是个什么东西呢?首先我们来看“协调”是什么意思.在一个并发的环境里, ...

  6. Js-声明变量

    JS声明变量 js声明变量的方式有3种:let,const,var 1.const如果定义简单数据类型,变成常量,变量值不可以更改. const name="lili"; name ...

  7. Kivy 简单尝试

    Kivy 简明教程 首先,有两个网址你不得不看: Kivy: Cross-platform Python Framework for NUI在官网逛逛,顺便看看最下面的代码,try to run it ...

  8. -sh: ./a.out: not found

    感觉程序没有问题,编译生成a.out后,拷贝到开发板执行,提示 -sh: ./a.out: not found. 上网查找问题,大概原因有2个 一就是有可能/lib下面没有C库 就是没有glibc或者 ...

  9. 使用busybox1.21.1制作根文件系统

    1. 下载源码 https://busybox.net/downloads/ 2. 解压 3. 修改Makefile ~/busybox-1.21.1$ vi Makefile 164行: 修改前:C ...

  10. QT容器类

    QList<T> 是一个指针数组,可以使用下标 append(), prepend(), insert() QList<QString> list; list<<& ...