创建docker静态化IP
配置桥接网络
桥接本地物理网络的目的,是为了局域网内用户方便访问 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的更多相关文章
- Docker容器(五)——Docker静态化IP
(1).Docker的四种网络模式 Docker有以下四种模式,通过--net=[参数]选项(现在也可以使用--network [参数])指定: host模式:使用宿主机的IP地址和端口.使用--ne ...
- 一步步创建第一个Docker App —— 2. 创建 Docker化 主机
原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...
- docker容器化python服务部署(supervisor-gunicorn-flask)
docker容器化python服务部署(supervisor-gunicorn-flask) 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-furt ...
- 新一代Java程序员必学的Docker容器化技术基础篇
Docker概述 **本人博客网站 **IT小神 www.itxiaoshen.com Docker文档官网 Docker是一个用于开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与 ...
- spring-boot项目的docker集成化部署(一)
目录 spring-boot项目的docker集成化部署 前言 基本思路与方案 基本步骤 准备源码 服务器和基础环境 结语 1. 本文总结: 2. 后期优化: spring-boot项目的docker ...
- Docker容器化技术(下)
Docker容器化技术(下) 一.Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基 ...
- Docker容器化技术(上)
目录 Docker容器化技术 一.介绍 二.Docker的发展 三.Docker安装 四.阿里云Docker镜像加速 五.Docker的基本概念 六.命令 七.Docker宿主机与容器通信 八.容器内 ...
- DJANGO-天天生鲜项目从0到1-007-首页静态化与缓存
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- JSP页面静态化
Ps:好久没写博客了,不是我太懒,是因为苦逼的我出差去上海了,天天加班 刚回成都.... 今天说说jsp页面静态化,知道静态化的朋友都不陌生,说白了就是访问后缀是html 而不是jsp. 没听说过静态 ...
随机推荐
- java——包装类数据缓存 ==号详解
Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存, 当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能.(只对常用数据进行缓存) Java中只是对部 ...
- kali入侵服务器的那一套实战
dnsenum -enum xxxxx.com 枚举出网站的所有域名和服务器的ip地址 打开百度查询ip地址的所在地 whatweb xxxx.com 查看那些网站入口可以访问 以状 ...
- centos安装配置mariadb
CentOS7下使用yum安装MariaDB CentOS 6 或早期的版本中提供的是 MySQL 的服务器/客户端安装包,但 CentOS 7 已使用了 MariaDB 替代了默认的 MySQL.M ...
- redis-cluster集群总结
Redis集群搭建 要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave.为什么需要3个Master呢?如果你了解过Hadoop/Storm/Zookeeper这 ...
- Linux:rm可不可以实现删除所有文件,除了demo文件
方法1: shopt -s extglob #开启扩展通配符 rm -rf !(demo) #删除除了demo的文件 方法2: find /test -not -name "demo&quo ...
- django_celery_results安装的坑
前言 在Celery4.0之前的版本中,有一个专门供Django使用的Celery版本django-celery.但现在Celery已经统一为一个版本,所以直接安装原生的Celery即可.这里就暂时 ...
- webapi 可空参数
这里上面是一个可空参数的例子.请不要写成 public WapOutgoingResponse<List<PatrolTaskOut>> GetTaskPatrolHistor ...
- 转PostgreSQL 用游标优化的一个例子
一位PG社区的朋友提到的一个应用场景,目前遇到性能问题. 数据结构大概是这样的,包含一个主键,一个数组,一个时间,其他字段. 请求分析: 有检索需求,比较频繁.查找数组中包含某些元素的记录,并按时间排 ...
- 19.8.28 flutter学习笔记
1:字符串的操作 length打印字符串的长度.“isEmpty”判断字符串是否为空. “contains()是否包含某个字符串”.”substring(startIndex,endIndex)截取一 ...
- Python实现Windows CMD命令行彩色输出
#! /usr/bin/env python #coding=utf-8 import ctypes,sys STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE ...