环境说明:

1.系统:centos7

2.docker:Docker version 1.3.2

3.docker启动参数:OPTIONS=--selinux-enabled=false -H fd:// -b=br0 -g /workspace/docker

配置过程:

====================bond========================

bond需要工作在主备模式下,在均衡模式下不行。(网卡7种bond模式原理)

1.bond做网桥前配置:

cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
IPADDR=x.x.x.x
NETMASK=x1.x1.x1.x1
NM_CONTROLLED=no
ONBOOT=yes
USERCTL=no

2.bond设置网桥:

cat /etc/sysconfig/network-scripts/ifcfg-bond0
BOOTPROTO=none
BRIDGE=br0
DEVICE=bond0
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bond
USERCTL=no

设置网桥br0

cat /etc/sysconfig/network-scripts/ifcfg-br0

BOOTPROTO=static
DEVICE=br0
IPADDR=x.x.x.x (与设置网桥前ifcfg-bond0中相同)
NETMASK=x1.x1.x1.x1 (与设置网桥前ifcfg-bond0中相同)
GATEWAY=x2.x2.x2.x2(根据情况设置)
NM_CONTROLLED=no
ONBOOT=yes
SLAVE=bond0
USERCTL=no
TYPE=Bridge

3.其他设备配置 cat /etc/sysconfig/network-scripts/ifcfg-em3

DEVICE=em3
BOOTPROTO=none
ONBOOT=yes
MASTER=bond1
SLAVE=yes
USERCTL=no
NM_CONTROLLED=no

4.cat /etc/modprobe.d/bond.conf

alias bond0 bonding
alias bond1 bonding
options bond0 mode=1 miimon=50
options bond1 mode=1 miimon=50

=======================eth===========================

1.做网桥前eth0配置:

cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
IPADDR=x.x.x.x
NETMASK=x1.x1.x1.x1
GATEWAY=x2.x2.x2.x2
NAME=eth0
ONBOOT=yes

2.eth设置网桥:

cat /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=none
BRIDGE=br0
DEVICE=eth0
NM_CONTROLLED=no
ONBOOT=yes
#TYPE=Ethernet
USERCTL=no

设置网桥br0:

cat /etc/sysconfig/network-scripts/ifcfg-br0
BOOTPROTO=static
DEVICE=br0
IPADDR=x.x.x.x  (与设置网桥前ifcfg-eth0中相同)
NETMASK=x1.x1.x1.x1  (与设置网桥前ifcfg-eth0中相同)
GATEWAY=x2.x2.x2.x2  (与设置网桥前ifcfg-eth0中相同)
NM_CONTROLLED=no
ONBOOT=yes
USERCTL=no
TYPE=Bridge

==========================================

启动容器:

docker run --rm -t -i --net=none --name=test centos:latest /bin/bash

为容器指定ip,路由及mac地址(下载pipework,通过pipework实现)

pipework br0 $cid $ip/16@$gateway_ip $mac

===================================================

搭建私有仓库:

安装依赖:

sudo yum install -y python-devel libevent-devel python-pip gcc xz-devel

sudo python-pip install docker-registry

或者源码安装(有外网):

git clone https://github.com/docker/docker-registry.git
cd docker-registryxxx

cp config/config_sample.yml config/config.yml #根据需求修改配置

(修改默认db位置:

sqlalchemy_index_database: _env:SQLALCHEMY_INDEX_DATABASE:sqlite:////home/maintain/registry/docker-registry.db

在dev段增加本地存储路径:

storage: local
storage_path: $yourpath

)

python setup.py install

无外网需要安装setuptools,sqlalchemy,requests,rsa,gunicorn,PyYAML,gevent,Flask,blinker,backports.lzma,greenlet,docker-registry-core,itsdangerous,Jinja2,Werkzeug,simplejson,boto(https://pypi.python.org/simple/这里都有)

启动(第一次可能失败,需要启动2次):

gunicorn -c contrib/gunicorn*.py docker_registry.wsgi:application

启动时若有如下报错:

'Heads-up! File is missing: %s' % config_path)
FileNotFoundError: Heads-up! File is missing: /usr/lib/python2.7/site-packages/docker_registry-0.9.0-py2.7.egg/docker_registry/lib/../../config/config.yml

将config.yml拷贝一份到/usr/lib/python2.7/site-packages/docker_registry-0.9.0-py2.7.egg/docker_registry/lib/../../config/config.yml即可

===============================

docker使用自建网桥和私有仓库启动参数:

OPTIONS=--selinux-enabled=false -H fd:// -b=br0 --insecure-registry=registryaddr:5000

========================================

异常:

1.docker重启失败可以尝试删除默认docker0网桥(ifconfig docker0 down;brctl delbr docker0),然后重启

2.如果删除了docker的某些文件(/val/lib/docker下的所有能删的文件),但是devicemapper没删掉,导致docker无法启动,如下报错

Can't set task name /dev/mapper/docker-xxxx-pool

Error running createDevice dm_task_run failed

此时想删除devicemapper,如果报rm: cannot remove ‘devicemapper’: Device or resource busy,则需要umount devicemapper,然后删除devicemapper

再删除默认docker0网桥(ifconfig docker0 down;brctl delbr docker0),然后重启

docker中文入门书

docker 不同机器上容器互相通信的更多相关文章

  1. Docker:跨主机容器间通信之overlay [十五]

    一.配置overlay类型网络准备工作 1.在luoahong3主机上 docker run -d -p 8500:8500 -h consul --name consul progrium/cons ...

  2. Docker网络和容器的通信

    Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair). 基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界 ...

  3. Docker 容器的通信(十二)

    目录 一.容器间通信 1.IP 通信 2.Docker DNS Server 3.joined 容器 二.容器访问外部网络 三.外部网络访问容器 1.随机端口 2.指定端口 3.不指定任何端口. 4. ...

  4. 如何使不同主机上的docker容器互相通信

    docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...

  5. 容器间通信的三种方式 - 每天5分钟玩转 Docker 容器技术(35)

    容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信. IP 通信 从上一节的例子可以得出这样一个结论:两个容器要能通信,必须要有属于同一个网络的网卡. 满足这 ...

  6. Docker:macvlan实现容器跨主机通信 [十四]

    一.什么是macvlan 1.macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址, 2.即多个 interface,每个 interface ...

  7. 不同主机的docker容器互相通信

    Docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.0.1/16,一个16位的子网掩码给容器提供了 65534个IP地址. docker0只是一个在绑定到 ...

  8. 002-docker安装-mac上安装docker,17.06在CentOS7 64位机器上安装

    一.mac上安装docker 1.下载 通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 2.安装 将 Moby 的鲸鱼图标拖拽到  ...

  9. AspNetCore容器化(Docker)部署(二) —— 多容器通信

    一.前言 着上一篇 AspNetCore容器化(Docker)部署(一) —— 入门,在单个容器helloworld的基础上引入nginx反向代理服务器组成多容器应用. 二.配置反向代理转接 配置转接 ...

随机推荐

  1. android开源框架之 andbase

    andbase开发框架介绍:andbase是为Android开发人员量身打造的一款开源类库产品,您能够在本站中获取到最新的代码,演示样例以及开发文档. 下载地址:http://download.csd ...

  2. iOS:带主标题、副标题、图像类型的表格视图UITableView

    制作一个通讯录,包括姓名.电话.头像,将表格视图类型设置为UITableViewCellStyleSubtitle 效果图: //创建一个联系人的类,初始化数据 在视图控制器中实现表格内容的显示 #i ...

  3. poj 1035 Spell checker ( 字符串处理 )

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16675   Accepted: 6087 De ...

  4. NotePad++ 显示字符

    转: http://shouce.jb51.net/notepad_book/npp_func_show_special_char.html

  5. AjaxPro因为汉字文件夹引发的IE兼容性问题

    公司一老项目.须要使用AjaxPro.引用dll,config配置,pageload注冊一直都没有问题. google浏览器測试成功. 奇怪的是在IE中英勇的爆掉了... .. 报错: eval(&q ...

  6. (剑指Offer)面试题39:判断平衡二叉树

    题目: 输入一课二叉树的根结点,判断该树是不是平衡二叉树.如果二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树. 思路: 1.重复遍历结点 参考上一题求二叉树的深度,先求出根结点 ...

  7. Android 实现透明效果的 Activity

    Android系统提供了将Activity设置为透明的主题:@android:style/Theme.Translucent 该属性同一时候支持隐藏TitleBar和全屏显示. 仅仅须要在Androi ...

  8. 算法笔记_137:二分图的最大匹配(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 何为二分图的最大匹配问题? 引用自百度百科: 首先得说明一下何为匹配: 给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于 ...

  9. JUnit单元测试基础要点

    JUnit单元测试基础要点 1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确. 2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的. 3.单元测 ...

  10. 完整的JavaScript版的信用卡校验代码

    function isValidCreditCard(type, ccnum) { if (type == "Visa") { // Visa: length 16, prefix ...